2010-08-05 52 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