2013-05-21 5 views
10

를 XML 버전을 추가하고 인코딩에서하여 XDocument를 방지하는 방법 :다음 코드에서 SaveOptions.DisableFormatting 옵션 사용에도 불구하고 정보

XDocument xmlDoc = XDocument.Load(FileManager.SourceFile); 
string element="campaign"; 
string attribute="id"; 

var items = from item in xmlDoc.Descendants(element)       
      select item; 

foreach (XElement itemAttribute in items) 
{ 
    itemAttribute.SetAttributeValue(attribute, "it worked!"); 
    //itemElement.SetElementValue("name", "Lord of the Rings Figures"); 
} 

xmlDoc.Save(TargetFile, SaveOptions.DisableFormatting); 

대상 XML 파일이가 추가 가져옵니다

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

을 원래 형식을 보존하고 버전 및 인코딩 정보를 추가하지 않는 방법이 있습니까?

+3

서식이 없습니다. 그것은 문서의 일부입니다. 어떤 문제로 인해 그걸 제거하고 싶습니까? –

+0

그 부분을 생략 한 기존 XML 파일을 사용하여 합성 데이터를 만들려고합니다. 내 변경 사항을 제외하고 결과 XML 파일을 원본 파일에 최대한 가깝게 배치하고 싶습니다. –

+0

이러한 지시문을 사용하면 코드에 문제가 없어야합니다. 어떤 코드가 신경 쓰면 깨져서 최대한 빨리 수정해야합니다. –

답변

20

파일 또는 TextWriter에 직렬화 할 때 XDocument.Save 메서드의 동작입니다. XML 선언을 생략하려면 XmlWriter (아래 그림 참조)을 사용하거나 ToString을 호출하십시오. Serializing with an XML Declaration을 참조하십시오.

XDocument xmlDoc = XDocument.Load(FileManager.SourceFile); 

// perform your modifications on xmlDoc here 

XmlWriterSettings xws = new XmlWriterSettings { OmitXmlDeclaration = true }; 
using (XmlWriter xw = XmlWriter.Create(targetFile, xws)) 
    xmlDoc.Save(xw);