2011-02-25 4 views
3

XElement.Save 실제로 내가 무엇을 필요로 하는가 그러나 사용하여 파일을 시작합니다XElement.Save를 사용할 때 xml 선언을 생략하는 방법?

<?xml version="1.0" encoding="utf-8"?> 

이 문제를 방지 할 수있는 방법이 있나요?

XElement을 만든 후에 다른 유형으로 저장해야합니까?

XmlReader.Read을 통해 해당 줄을 건너 뛰어도됩니까? 이 일을하기 때문에 첫 번째 줄이 항상이 xml 선언이 될 것이라고 가정 할 때 더 취약하다는 느낌이 들기 때문입니다.

이 작업을 수행하는 가장 간단한 방법은 무엇입니까?

+0

왜 당신이를 떠나고 싶지 않습니다를? –

+0

감사합니다. John, 이제 XML을 읽는 방법이 효과적 이었기 때문에 생각할 필요가 없습니다. 그렇지 않으면 다른 질문에 게시 된 나의 방법으로 오류가 발생했습니다. –

답변

5

XElement.ToString() 출력에 XML 선언을 추가하지 않습니다. 그러나 나는 왜 XmlReader (또는 모든 XML 파서)이 표준 XML 선언에 문제가 있는지 이해하지 못합니다.

+0

감사합니다. 독자를 사용했을 때, 유효하지 않은 데이터 루트, 라인 1 등등을 던졌습니다. –

+0

파일 시작 부분의 Byte Order Mark로 인해 매우 유사한 오류가 발생했습니다. 조사할만한 가치가 있을지도 몰라. – Jon

2

XmlWriter를 사용하면이 기능을 사용할 수 있습니다.

Microsoft 문서 : Serializing with an XML Declaration은 직렬화에서 XML 선언 생성 여부를 제어하는 ​​방법을 설명합니다.

0

이 예는 선언 라인없이 예를 텍스트 파일로 를 XMLTree 데이터 인 data.xml를 기록, 아직 들여 쓰기 서식 포함

XElement xmlTree = new XElement("Root", 
    new XAttribute("Attribute1", 1), 
    new XElement("Child1", 1), 
    new XElement("Child2", 2) 
); 
using (var writer = XmlWriter.Create("data.xml", new XmlWriterSettings { OmitXmlDeclaration = true, Indent = true })) 
    xmlTree.Save(writer); 
관련 문제