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

C# 使用Xdocument将xml文档的一部分复制到另一个文档,c#,xml,linq-to-xml,C#,Xml,Linq To Xml,我有一个xml文档,大致如下 <Gov> <Head> <address></address> <address></address> </Head> <Body> <line1></line1> <line1></line1> </Body> &

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

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


我需要将正文(包括)中的所有内容复制到新的XDocument。最好的方法是什么?这里是一个将数据“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);
            }
        }
    }
}
使用系统;
使用System.Xml;
使用System.Xml.Linq;
名称空间MyTest
{
内部课程计划
{
私有静态void Main(字符串[]args)
{
var xmlDocument=新的xmlDocument();
LoadXml(“测试”);
var xDocument=xmlDocument.ToXDocument();
var newXmlDocument=xDocument.ToXmlDocument();
Console.ReadLine();
}
}
公共静态类文档扩展
{
公共静态XmlDocument ToXmlDocument(此XDocument XDocument)
{
var xmlDocument=新的xmlDocument();
使用(var xmlReader=xDocument.CreateReader())
{
加载(xmlReader);
}
归还文件;
}
公共静态XDocument文档(此XmlDocument XmlDocument)
{
使用(var nodeReader=新的XmlNodeReader(xmlDocument))
{
noderReader.MoveToContent();
返回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);
XmlDocument doc1=新的XmlDocument();
doc1.LoadXml(@)
测验
");
XmlDocument doc2=新的XmlDocument();
doc2.LoadXml(@)
");
XmlNode copiedNode=doc2.ImportNode(doc1.SelectSingleNode(“/Hello/World”),true);
doc2.DocumentElement.AppendChild(copiedNode);
更多信息请点击此处:


  • 我希望这对您有所帮助。

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

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