假设我有以下XML文件
<root></root>和下面的文件
<child>
<more-childeren> </more-childeren>
</child>如何将第二个文件插入到第一个文件中以创建以下文件:
<root>
<child>
<more-childeren> </more-childeren>
</child>
</root>我正在以XPathNavigator的形式接收第二个文件。将XPathNavigator插入到XML文件中最快的方法是什么?
发布于 2020-12-07 11:20:14
如果在可编辑树结构(如XPathNavigators )(如XmlDocument/XmlNode )上使用AppendChild,则使用AppendChild方法获取XPathNavigator https://learn.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();对于避免您在评论中提到的异常是至关重要的。
发布于 2020-12-07 11:27:41
尝试以下xml:
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));https://stackoverflow.com/questions/65180667
复制相似问题