将 XDocument 转换为 XmlDocument,反之亦然
这是我遇到的一个非常简单的问题。我使用 XDocument 生成 XML 文件。然后我想将其作为 XmlDocument 类返回。 我有一个 XmlDocument 变量,需要将其转换回 XDocument 以附加更多节点。
那么,在 XDocument 和 XmlDocument 之间转换 XML 的最有效方法是什么? (不使用文件中的任何临时存储。)
It's a very simple problem that I have. I use XDocument to generate an XML file. I then want to return it as a XmlDocument class.
And I have an XmlDocument variable which I need to convert back to XDocument to append more nodes.
So, what is the most efficient method to convert XML between XDocument and XmlDocument? (Without using any temporary storage in a file.)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
您可以使用内置的 xDocument.CreateReader() 和 XmlNodeReader 来回转换。
将其放入扩展方法中以使其更易于使用。
资料来源:
You can use the built in xDocument.CreateReader() and an XmlNodeReader to convert back and forth.
Putting that into an Extension method to make it easier to work with.
Sources:
对我来说,这个单行解决方案非常有效
For me this single line solution works very well
如果您需要将 System.Xml.Linq.XDocument 的实例转换为 System.Xml.XmlDocument 的实例,此扩展方法将帮助您在生成的 XmlDocument 实例中不丢失 XML 声明 :
希望有帮助!
If you need to convert the instance of System.Xml.Linq.XDocument into the instance of the System.Xml.XmlDocument this extension method will help you to do not lose the XML declaration in the resulting XmlDocument instance:
Hope that helps!
您可以尝试将 XDocument 写入通过管道传输到 XmlDocument 的 XmlReader 的 XmlWriter。
如果我正确理解这些概念,则不可能直接转换(内部结构与 XDocument 不同/简化)。但那样的话,我可能错了……
You could try writing the XDocument to an XmlWriter piped to an XmlReader for an XmlDocument.
If I understand the concepts properly, a direct conversion is not possible (the internal structure is different / simplified with XDocument). But then, I might be wrong...
有一个关于 http://blogs.msdn.com/marcelolr/archive/2009/03/13/fast-way-to-convert-xmldocument-into-xdocument.aspx
似乎通过读取XDocument >XmlNodeReader 是最快的方法。请参阅博客了解更多详细信息。
There is a discussion on http://blogs.msdn.com/marcelolr/archive/2009/03/13/fast-way-to-convert-xmldocument-into-xdocument.aspx
It seems that reading an XDocument via an XmlNodeReader is the fastest method. See the blog for more details.
如果您需要 Win 10 UWP 兼容变体:
If you need a Win 10 UWP compatible variant: