2010-05-09 4 views
0

주석 처리 된 줄을 저장 한 후에도 XML 파일을 업데이트 할 때 어떻게 사용합니까? 이 코드는 완전히 XML 파일을 덮어 쓰게됩니다xml 파일을 저장하지 않고

public static void WriteSettings(Settings settings, string path) 
    { 
     XmlSerializer serializer = new XmlSerializer(typeof(Settings)); 
     TextWriter writer = new StreamWriter(path); 
     serializer.Serialize(writer, settings); 
     writer.Close();    
    } 
+0

사용한다 '사용 (TextWriter에 작가 = 새에서는 StreamWriter (경로)) {serializer.Serialize (작성자, 설정);}'. 예외가 있어도 작성자가 정리되도록 보장합니다. –

답변

0

:

여기에 파일을 저장하기위한 내 코드입니다. 기존 파일에 주석을 유지하려면 먼저 파일을 읽은 다음 업데이트하고 저장해야합니다.

+0

어떻게해야합니까 (읽기, 업데이트, 저장)? 샘플이 있습니까? 댓글을 저장할 수있는 다른 방법이 있습니까? 감사합니다. – little

+0

뿐만 아니라 의견을 보존하고 싶다면 http://stackoverflow.com/questions/2129414/how-to-insert-xml-comments-in-xml-serialization – volody

+0

(읽기, 업데이트, 저장)을 확인할 수 있습니다. 외부 (수동 편집과 같은) – volody

3

요구 사항을 잘 모르겠습니다. XmlSerializer는 XML 형식의 개체의 serialize 된 버전을 만들기 위해 설계 되었기 때문에 사용하지 말라고 말할 것입니다. 객체에는 XML 주석이 없으므로 객체에 대해 생성 된 XML은 주석을 생성하지 않습니다. 당신은 순수한 XML을 처리하려면, 단지 아니라 XML 문서로 클래스를 직렬화를 위해 설계 한 것보다 간단한 XML 구문 분석 클래스를 사용 : BTW

string myXml = 
    "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" + Environment.NewLine + 
    "<!-- This is a comment -->" + Environment.NewLine + 
    "<Root><Data>Test</Data></Root>"; 

System.Xml.XmlDocument xml = new System.Xml.XmlDocument(); 
xml.PreserveWhitespace = true; 
xml.LoadXml(myXml); 
var newElem = xml.CreateElement("Data"); 
newElem.InnerText = "Test 2"; 
xml.SelectSingleNode("/Root").AppendChild(newElem); 
System.Xml.XmlWriterSettings xws = new System.Xml.XmlWriterSettings(); 
xws.Indent = true; 
using (System.Xml.XmlWriter xw = System.Xml.XmlWriter.Create(Console.Out, xws)) 
{ 
    xml.WriteTo(xw); 
} 
관련 문제