使用Xdocument将xml文档的一部分复制到另一个文档

本文关键字:文档 复制 另一个 一部分 xml 使用 Xdocument | 更新日期: 2023-09-27 18:13:57

我有一个xml文档,大致如下

<Gov>
    <Head>
        <address></address>
        <address></address>
    </Head>
    <Body>
        <line1></line1>
        <line1></line1>
    </Body>
<Gov>

我需要将正文中的所有内容(包括(复制到一个新的XDocument中。的最佳方法是什么

使用Xdocument将xml文档的一部分复制到另一个文档

下面是将数据"xml"从一个文档复制到另一个文档的示例。选择个性化节点

首先需要将Xdocument转换为XmlDocument:

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);
            }
        }
    }
}

现在使用XmlDocument简化了复制

    XmlDocument doc1 = new XmlDocument();
    doc1.LoadXml(@"<Hello>
                           <World>Test</World>
                   </Hello>");
    XmlDocument doc2 = new XmlDocument();
    doc2.LoadXml(@"<Hello>
                   </Hello>");
    XmlNode copiedNode = doc2.ImportNode(doc1.SelectSingleNode("/Hello/World"), true);
    doc2.DocumentElement.AppendChild(copiedNode);

更多信息请点击这里:

  1. http://blog.project-sierra.de/archives/1050
  2. 将Xml元素复制到C中的另一个文档#
  3. 将XDocument转换为XmlDocument,反之亦然

我希望这对你有帮助。

将输入的XML读入一个XDocument中,并构造第二个,传入您感兴趣的节点:

XDocument newDoc = new XDocument(XDocument.Load("input.xml").Descendants("Body").First());