2010-08-05 81 views
0

我有像這樣XDocument.Load失去宣言

<?xml version="1.0" encoding="us-ascii"?> 
<AutomatedDispenseResponse> 
    <header shipmentNumber=""></header> 
    <items></items> 
</AutomatedDispenseResponse> 

一個XML模板文件,當我使用XDocument.Load,由於某種原因,

<?xml version="1.0" encoding="us-ascii"?> 

被丟棄。

如何將文件加載到XDocument中而不會丟失頂部的聲明?

回答

2

我懷疑它不是真的是在加載聲明時放棄聲明 - 這是在你寫文檔的時候你錯過了它。下面是一個示例應用程序,它爲我的作品:

using System; 
using System.Xml.Linq; 

class Test 
{ 
    static void Main() 
    { 
     XDocument doc = XDocument.Load("test.xml"); 
     Console.WriteLine(doc.Declaration); 
    } 
} 

而且的test.xml:

<?xml version="1.0" encoding="us-ascii" ?> 
<Foo> 
    <Bar /> 
</Foo> 

輸出:

<?xml version="1.0" encoding="us-ascii"?> 

聲明XDocument.ToString()顯示,並可在使用XDocument.Save時被替換,因爲您可能正在使用類似TextWriter的東西,該東西已知道哪些編碼它正在使用。如果你保存到一個流或只是一個文件名,它保存在我的經驗。

+0

我發現不久後發佈(當然)。自從它調用ToString()以來,intellisense就拋棄了我。我只需要做一些像http://stackoverflow.com/questions/957124/how-to-print-xml-version1-0-using-xdocument/957161#957161 – Kenoyer130 2010-08-05 14:30:54

2

它被加載。你可以看到它,並使用它的一部分:

XDocument.Parse(myDocument).Declaration