c# - 将 XDocument 转换为 XmlDocument,反之亦然

标签 c# xml linq-to-xml

这是我遇到的一个非常简单的问题。我使用 XDocument 生成 XML 文件。然后我想将它作为 XmlDocument 类返回。 我有一个 XmlDocument 变量,我需要将其转换回 XDocument 以附加更多节点。

那么,在 XDocument 和 XmlDocument 之间转换 XML 的最有效方法是什么? (不使用文件中的任何临时存储。)

最佳答案

您可以使用内置的 xDocument.CreateReader() 和 XmlNodeReader 来回转换。

将其放入扩展方法中以使其更易于使用。

using System;
using System.Xml;
using System.Xml.Linq;

namespace MyTest
{
    internal class Program
    {
        private static void Main(string[] args)
        {

            var xmlDocument = new XmlDocument();
            xmlDocument.LoadXml("<Root><Child>Test</Child></Root>");

            var xDocument = xmlDocument.ToXDocument();
            var newXmlDocument = xDocument.ToXmlDocument();
            Console.ReadLine();
        }
    }

    public static class DocumentExtensions
    {
        public static XmlDocument ToXmlDocument(this XDocument xDocument)
        {
            var xmlDocument = new XmlDocument();
            using(var xmlReader = xDocument.CreateReader())
            {
                xmlDocument.Load(xmlReader);
            }
            return xmlDocument;
        }

        public static XDocument ToXDocument(this XmlDocument xmlDocument)
        {
            using (var nodeReader = new XmlNodeReader(xmlDocument))
            {
                nodeReader.MoveToContent();
                return XDocument.Load(nodeReader);
            }
        }
    }
}

来源:

关于c# - 将 XDocument 转换为 XmlDocument,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1508572/

相关文章:

c# - 按数字和符号拆分字符串 c#

c# - 如何从片段字符串将 XML 加载到可用对象中?

xml - Tomcat web.xml MIME 映射不适用于 .js.map 文件

excel - 在 XDocument 中使用 ':' 字符生成 Excel - C#

C# Distinct on IEnumerable<T> 与自定义 IEqualityComparer

c# - TPL 如何执行 'Call-Back'

c# - 在 Matlab 中创建共享库(.NET Assembly)并在 C# 中使用它

c# - 增加 ServicePointManager.DefaultConnectionLimit 的缺点

c# - 如何从 Visual Studio 2003 中的调试器检查 XML 流

sql - 通过xml文件读取sql查询