2011-02-25 45 views
3

XElement.Save實際上並我需要什麼,但它開頭的文件:如何在使用XElement.Save時省略xml聲明?

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

是否有辦法防止這種情況?

我完成創建我的XElement後應該使用其他類型保存嗎?

或者我應該跳過XmlReader.Read那條線嗎?因爲這樣做,我覺得它更脆弱,因爲我假設第一行始終是這個XML聲明。

完成此操作最簡單的方法是什麼?

+0

爲什麼你要離開了這一點? – 2011-02-26 02:24:08

+0

謝謝約翰,現在我不需要我認爲,因爲你閱讀XML的方式工作。否則,當我在另一個問題中發佈的方法發生錯誤時。 – 2011-02-26 02:31:53

回答

5

XElement.ToString()不會將XML聲明添加到輸出中。但我不明白爲什麼XmlReader或任何XML解析器在標準的XML聲明中會遇到麻煩。

+0

謝謝,當我使用閱讀器時,它會拋出一個異常說,無效的數據根,第1行等。 – 2011-02-26 00:12:37

+0

我見過由文件開始處的字節順序標記造成的非常類似的錯誤。可能值得調查。 – Jon 2012-01-12 22:49:23

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);