如何在 C# 序列化类中对动态 XML 元素建模?

发布于 2024-09-15 10:49:55 字数 453 浏览 2 评论 0原文

我有一个 XML 文档,其中元素节点之一可以是动态的,也可以是任何 XML 结构。我在对相应的 C# 序列化类进行建模时遇到了困难。

例如,我的 C# 类中有这样的内容:

[XmlAnyElement]
public XmlNode Value { get; set; }

其中 XmlNode 是 System.Xml.XmlNode。

一些注意事项:

  • 我希望 value 是通过 Linq 的 XDocument 加载的 XML 文件(减去 XML 标头标签)
    • 虽然我没有找到将 System.Xml.Linq.XNode 转换为 System.Xml.XmlNode 的方法
  • 我不希望结果 XML 具有元素。我希望它成为我加载的 XML 文档的根元素。

I have an XML document where one of the element nodes can be dynamic, or of any XML structure. I'm having a difficult time modeling the corresponding C# serialization class.

For example I have something like this in my C# class:

[XmlAnyElement]
public XmlNode Value { get; set; }

Where XmlNode is System.Xml.XmlNode.

A few notes:

  • I want value to be an XML file I'm loading via Linq's XDocument (minus the XML header tag)
    • Though I don't see a way to convert an System.Xml.Linq.XNode to System.Xml.XmlNode
  • I don't want the result XML to have an element <Value>. I want it to be the root element of the XML document I loaded.

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

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

发布评论

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

评论(1

森罗 2024-09-22 10:49:55

我明白了这一点。我保持属性声明相同并创建了这个帮助器类:


public static class XmlDocumentHelper
{
    public static XmlDocument FromXDocument(XDocument document)
    {
        var result = new XmlDocument();
        using (XmlReader reader = document.CreateReader())
        {
            result.Load(reader);
        }
        return result;
    }
}

因此值设置如下:Value = XmlDocumentHelper.FromXDocument(document);

I figured this out. I kept the property declaration the same and created this helper class:


public static class XmlDocumentHelper
{
    public static XmlDocument FromXDocument(XDocument document)
    {
        var result = new XmlDocument();
        using (XmlReader reader = document.CreateReader())
        {
            result.Load(reader);
        }
        return result;
    }
}

So Value is set like this: Value = XmlDocumentHelper.FromXDocument(document);

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