Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#如何将XPathnavigator插入XPathnavigator_C#_Xml_Xslt_Xml Parsing - Fatal编程技术网

C#如何将XPathnavigator插入XPathnavigator

C#如何将XPathnavigator插入XPathnavigator,c#,xml,xslt,xml-parsing,C#,Xml,Xslt,Xml Parsing,假设我有以下XML文件 <root></root> 和下面的文件 <child> <more-childeren> </more-childeren> </child> 如何将第二个文件插入第一个文件以创建以下文件: <root> <child> <more-childeren> </more-childeren> </

假设我有以下XML文件

<root></root>

和下面的文件

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

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

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


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

如果您在可编辑的树结构(如
XmlDocument/XmlNode
上使用XPathNavigator,则使用
AppendChild
方法获取XPathNavigator。这至少是最方便和API支持的方式,“最快”是您需要测试的不同标准

我使用.NET framework的一个简单示例是

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

XmlDocument doc=新的XmlDocument();
doc.LoadXml(@“);
XPathNavigator nav=doc.DocumentElement.CreateNavigator();
XPathdoc2文件;
使用(XmlReader xr=XmlReader.Create)(新建StringReader(@)
")))
{
doc2=新的XPathDocument(xr);
}
XPathNavigator nav2=doc2.CreateNavigator();
nav2.MoveToFirstChild();
资产负债表(nav2);
单据保存(控制台输出);

调用
nav2.MoveToFirstChild()似乎对于避免您在评论中提到的异常非常重要。

尝试以下xml linq:

           string xml1 = "<root></root>";
            string xml2 = "<child><more-childeren> </more-childeren></child>";

            XDocument doc1 = XDocument.Parse(xml1);

            XElement root = doc1.Root;
            root.Add(XElement.Parse(xml2));
string xml1=”“;
字符串xml2=“”;
XDocument doc1=XDocument.Parse(xml1);
XElement root=doc1.root;
root.Add(XElement.Parse(xml2));

使用appendChild方法时,由于导航器错误的当前位置,操作无效。即使在使用MoveToRoot()时也会出现此错误beforehand@Jiren,查看编辑中的示例是否有帮助。