2010-04-23 2 views
7

파일에서 읽은 XMLDocument가 있습니다. 파일은 유니 코드이며 줄 바꿈 문자 '\ n'을가집니다. XMLDocument를 다시 쓰면 줄 바꿈 문자 '\ r \ n'이 생깁니다. 여기 특정 줄 바꿈 문자 (C#)가있는 파일에 XMLDocument 작성

은 아주 간단 코드입니다 :

XmlTextWriter writer = new XmlTextWriter(indexFile + ".tmp", System.Text.UnicodeEncoding.Unicode); 
writer.Formatting = Formatting.Indented; 

doc.WriteTo(writer); 
writer.Close(); 

XmlWriterSettings는 속성, NewLineChars을 가지고 있지만, 나는 '작가'의 설정 매개 변수를 지정 드릴 수 없습니다, 그것은 읽기 전용입니다.

XmlWriter에 지정된 XmlWriterSettings 속성을 사용하여 XmlWriter를 만들 수 있지만 XmlWriter에 서식 속성이 없으므로 줄 바꿈이 전혀없는 파일이됩니다.

즉, 줄 바꿈 문자 '\ n'과 Formatting.Indented가있는 유니 코드 Xml 파일을 작성해야합니다. 생각?

+0

도 참조 : http://stackoverflow.com/questions/3415294/how-can-i-generate-xml-with-cr-instead-of-crlf-in-xmltextwriter (이 여기에 답변을 참조하십시오.) –

답변

5

가까운 사이라고 생각합니다.

합니다 (XmlWriterSettings MSDN 페이지에서 드러내)

XmlWriterSettings settings = new XmlWriterSettings(); 
settings.Indent = true; 
settings.OmitXmlDeclaration = true; 
settings.NewLineOnAttributes = true; 

writer = XmlWriter.Create(Console.Out, settings); 

writer.WriteStartElement("order"); 
writer.WriteAttributeString("orderID", "367A54"); 
writer.WriteAttributeString("date", "2001-05-03"); 
writer.WriteElementString("price", "19.95"); 
writer.WriteEndElement(); 

writer.Flush(); 
+0

두 답은 내가 누락 된 부분에 나를 안내해주었습니다 : settings.Indent = true; – jaws

5

가 사용 XmlWriter.Create() 작가를 만들고 형식을 지정하는 : 당신은 설정 개체에서 작가를 만들어야합니다. 이것은 잘 작동 :

using System; 
using System.Xml; 

class Program { 
    static void Main(string[] args) { 
     XmlWriterSettings settings = new XmlWriterSettings(); 
     settings.NewLineChars = "\n"; 
     settings.Indent = true; 
     XmlWriter writer = XmlWriter.Create(@"c:\temp\test.xml", settings); 
     XmlDocument doc = new XmlDocument(); 
     doc.InnerXml = "<root><element>value</element></root>"; 
     doc.WriteTo(writer); 
     writer.Close(); 
    } 
}