XDocument.Load 丢失声明

发布于 2024-09-13 04:49:00 字数 416 浏览 4 评论 0原文

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

I have a XML template file like so

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

When I use XDocument.Load, for some reason the

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

is dropped.

How do I load the file into a XDocument and not losing the declaration at the top?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

七禾 2024-09-20 04:49:00

我怀疑它并不是真正在加载时删除声明 - 而是当您写出文档时您丢失了它。下面是一个适合我的示例应用程序:

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

I suspect it's not really dropping the declaration on load - it's when you're writing the document out that you're missing it. Here's a sample app which works for me:

using System;
using System.Xml.Linq;

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

And test.xml:

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

Output:

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

The declaration isn't shown by XDocument.ToString(), and may be replaced when you use XDocument.Save because you may be using something like a TextWriter which already knows which encoding it's using. If you save to a stream or just to a filename, it's preserved in my experience.

忘东忘西忘不掉你 2024-09-20 04:49:00

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

XDocument.Parse(myDocument).Declaration

It is loaded. You can see it and access parts of it using:

XDocument.Parse(myDocument).Declaration
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文