首页 > 解决方案 > C# 如何将 XPathnavigator 插入 XPathnavigator

问题描述

假设我有以下 XML 文件

<root></root>

和以下文件

<child>
    <more-childeren> </more-childeren>
</child>

如何将第二个文件插入第一个文件以创建以下文件:

<root>
    <child>
        <more-childeren> </more-childeren>
    </child>
</root>

我正在接收作为 XPathNavigator 的第二个文件。将 XPathNavigator 插入 XML 文件的最快方法是什么?

标签: c#xmlxsltxml-parsing

解决方案


如果您在可编辑的树结构上使用 XPathNavigator,XmlDocument/XmlNode则使用采用AppendChildXPathNavigator https://docs.microsoft.com/en-us/dotnet/api/system.xml.xpath.xpathnavigator.appendchild?view=net-5.0的方法#System_Xml_XPath_XPathNavigator_AppendChild_System_Xml_XPath_XPathNavigator_。这至少是最方便且受 API 支持的方式,“最快”是您需要测试的不同标准。

一个使用 .NET 框架为我工作的简单示例是

            XmlDocument doc = new XmlDocument();
            doc.LoadXml(@"<root></root>");

            XPathNavigator nav = doc.DocumentElement.CreateNavigator();

            XPathDocument doc2;
            using (XmlReader xr = XmlReader.Create(new StringReader(@"<child>
    <more-childeren> </more-childeren>
</child>")))
            {
                doc2 = new XPathDocument(xr);
            }


            XPathNavigator nav2 = doc2.CreateNavigator();
            nav2.MoveToFirstChild();

            nav.AppendChild(nav2);

            doc.Save(Console.Out);

该电话nav2.MoveToFirstChild();似乎对于不获得您在评论中提到的异常至关重要。


推荐阅读