Files
SheetMe/src/SheetMe.Data/Stores/XmlFileFormStore.cs
T
MsystechandClaude Fable 5 16c07f48dc 초기 커밋: SheetMe 서식생성기 (P0~P5 완료 상태)
레거시 서식생성기(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>
2026-08-11 17:20:22 +09:00

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
}