2011-02-25 16 views
3

XElement.Saveは、実際に何が必要ありませんが、それはしてファイルを開始:XElement.Saveの使用時にxml宣言を省略するにはどうすればよいですか?

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

これを防ぐ方法はありますか?

XElementの作成が完了したら、他のタイプを使用して保存する必要がありますか?

XmlReader.Read経由でその行をスキップする必要がありますか?これを行うため、私は最初の行が常にこのxml宣言になると仮定しているので、より壊れやすいように感じます。

これを達成する最も簡単な方法は何ですか?

+0

あなたはそれを残したいなぜ? –

+0

ありがとうジョン、今私はあなたのXMLを読んであなたの方法が働いたので、私は思う必要はありません。それ以外の場合、私は他の質問に投稿された自分のメソッドでエラーが発生していました。 –

答えて

5

XElement.ToString()出力にXML宣言を追加しません。しかし、私はXmlReader - または任意のXMLパーサ - が標準のXML宣言に問題がある理由を理解していません。

+0

ありがとう、私はリーダーを使用すると、無効なデータルート、行1など例外をスローします。 –

+0

ファイルの先頭にバイトオーダーマークによって引き起こされる非常に似たエラーを見たことがあります。調査する価値があるかもしれない。 – 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); 
関連する問題