簡體   English   中英

結合兩個xml_docs C#xmlDocument

[英]combine two xml_docs C# xmlDocument

我一直在使用以下SO, 如何在C#中合並兩個XmlDocuments ,以嘗試將兩個示例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>

我正在使用此代碼片段將其合並到一個文件中,但是該過程實際上並未將它們組合在一起。 我對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獲取根的每個子節點(在本例中為<name> )並將其附加到test1.xml是正確的。 我也嘗試過:

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

無濟於事,任何建議將不勝感激。

尚不清楚您需要執行哪些合並操作-但是,如果您需要復制根節點的子元素,那么使用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-我強烈建議您在有機會的情況下使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM