我有一个像这样的XML模板文件
<?xml version="1.0" encoding="us-ascii"?>
<AutomatedDispenseResponse>
<header shipmentNumber=""></header>
<items></items>
</AutomatedDispenseResponse>
当我使用XDocument.Load时,出于某种原因
<?xml version="1.0" encoding="us-ascii"?>
被删除。
如何将文件加载到XDocument中,而不是丢失顶部的声明?
答案 0 :(得分: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
之类的内容知道它正在使用哪种编码。如果你保存到一个流或只是一个文件名,它就保留了我的经验。
答案 1 :(得分:2)
它已加载。您可以使用以下方式查看并访问部分内容:
XDocument.Parse(myDocument).Declaration