레거시 서식생성기(VB.NET WinForms) 대체용 C#/.NET 10 WPF 디자이너. 기준선: 실DB 활성 디자인 1,271건 왕복 의미론 diff 0 / 예외 0, 단위 테스트 49/49. 이 커밋에 함께 포함된 자격증명 분리: - appsettings.json 을 __HOST__/__PASSWORD__ 플레이스홀더로 전환 - 실접속 정보는 appsettings.Development.json 으로 분리(.gitignore 제외, csproj Debug 조건부 복사라 Release 산출물에 실리지 않음) - ConfigLoader 를 환경변수 > Development > appsettings 순 레이어링으로 변경, 미치환 플레이스홀더는 '미설정'으로 간주 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
36 lines
1.2 KiB
C#
36 lines
1.2 KiB
C#
using System.Text;
|
|
using SheetMe.Core.Models;
|
|
using SheetMe.Core.Serialization;
|
|
|
|
namespace SheetMe.Data.Stores;
|
|
|
|
/// <summary>
|
|
/// 파일 기반 서식 저장소 — 레거시 XML(.xml) 파일 열기/저장.
|
|
/// 레거시 디자이너의 XML 내보내기(TK_ExportXML) 산출물과 호환되며, DB 없는 개발 모드의 기본 저장소.
|
|
/// </summary>
|
|
public sealed class XmlFileFormStore
|
|
{
|
|
#region Member Fields
|
|
private readonly LegacyXmlSerializer serializer = new();
|
|
#endregion
|
|
|
|
#region Methods
|
|
/// <summary>XML 파일 열기 — FormId 는 파일명에서 유래</summary>
|
|
public FormDocument LoadFile(string path)
|
|
{
|
|
var content = File.ReadAllText(path);
|
|
var document = serializer.Read(content);
|
|
document.FormId = Path.GetFileNameWithoutExtension(path);
|
|
document.Title = document.FormId;
|
|
return document;
|
|
}
|
|
|
|
/// <summary>XML 파일 저장 — UTF-8(BOM 없음)</summary>
|
|
public void SaveFile(FormDocument document, string path)
|
|
{
|
|
var xml = serializer.Write(document);
|
|
File.WriteAllText(path, xml, new UTF8Encoding(encoderShouldEmitUTF8Identifier: false));
|
|
}
|
|
#endregion
|
|
}
|