【问题标题】:XDocument.Load losing DeclarationXDocument.Load 丢失声明
【发布时间】:2010-08-05 22:27:01
【问题描述】:

我有一个这样的 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 中而不丢失顶部的声明?

【问题讨论】:

    标签: c# linq-to-xml


    【解决方案1】:

    我怀疑它并不是真的在加载时放弃声明 - 当你写出文档时你错过了它。这是一个适用于我的示例应用程序:

    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 的东西,它已经知道它正在使用哪种编码。如果您保存到流或仅保存到文件名,根据我的经验,它会被保留。

    【讨论】:

    【解决方案2】:

    已加载。您可以使用以下命令查看和访问其中的部分内容:

    XDocument.Parse(myDocument).Declaration
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-03
      • 1970-01-01
      • 1970-01-01
      • 2018-04-08
      • 1970-01-01
      • 2021-10-25
      • 1970-01-01
      • 2022-06-30
      相关资源
      最近更新 更多