【问题标题】:combine two xml_docs C# xmlDocument结合两个 xml_docs C# xmlDocument
【发布时间】:2016-08-28 15:21:42
【问题描述】:

我一直在使用以下 SO,How to merge two XmlDocuments in C#,尝试将两个示例 xml 文件合并为一个。基本上这里是我的两个 xml 文件

test1.xml:

<root>
    <Name>
        <id>4</id>
        <First_name>Tony</First_name>
        <last_name>""</last_name>
    </Name>
    <Name>
        <id>6</id>
        <First_name>Donny</First_name>
        <last_name>Test</last_name>
        <middle_name>Ward</middle_name>
    </Name>
</root>

还有test2.xml

<root>
    <Name>
        <id>1</id>
        <First_name>Nick</First_name>
        <last_name>Tester</last_name>
    </Name>
    <Name>
        <id>2</id>
        <First_name>Lauren</First_name>
        <last_name>MsTester</last_name>
    </Name>
</root>

我正在使用此代码 sn-p 将其合并到一个文件中,但该过程实际上并未将它们合并。我对 xmlDocument 类知之甚少,但仍在尝试正确解决此问题。

代码:

XmlDocument xmlreader1 = new XmlDocument();
xmlreader1.Load("C:\\Temp\\test1.xml");
XmlDocument xmlreader2 = new XmlDocument();
xmlreader2.Load("C:\\Temp\\test2.xml");

foreach (XmlNode node in xmlreader2.DocumentElement.ChildNodes)
{
    XmlNode importedDocument = xmlreader1.ImportNode(node, true);
    xmlreader1.DocumentElement.AppendChild(importedDocument);
}

我相信从 test2.xml 获取根的每个子节点(在本例中为 &lt;name&gt;)并将其附加到 test1.xml 是正确的。我也尝试过:

XmlNode importedDocument = xmlreader1.ImportNode(xmlreader2.DocumentElement, true);
xmlreader1.DocumentElement.AppendChild(importedDocument);

再次无济于事,任何建议将不胜感激。

【问题讨论】:

  • 您是否特别需要使用XmlDocument? LINQ to XML 通常更易于使用。此外,请更加注意格式化您的帖子 - 查看预览,并且仅在问题看起来像您想要回答时才提交。

标签: c# xml


【解决方案1】:

您需要执行哪些合并操作并不完全清楚 - 但如果您只是需要复制根节点的子元素,那么使用 LINQ to XML 真的很简单:

XDocument doc1 = XDocument.Load("test1.xml");
XDocument doc2 = XDocument.Load("test2.xml");
doc1.Root.Add(doc2.Root.Elements());
doc1.Save("test3.xml");

这不会执行任何实际的合并 - 如果您在两个文件中都有具有相同 ID 的元素,您最终会在结果中得到两个元素,而不是一个合并元素。

我个人更喜欢使用 LINQ to XML 而不是旧的 XmlDocument API - 我会强烈建议您有机会时使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-09
    • 2010-11-18
    • 1970-01-01
    相关资源
    最近更新 更多