Объединение двух XML-файлов LINQ - PullRequest
0 голосов
/ 08 февраля 2011

У меня проблема с объединением двух файлов XML.Я загрузил оба файла в два объекта, расположил целевые узлы в обоих объектах и ​​попытался объединить.

Вот пример:

var nodes1 = XResult1.Descendants("subject");
var nodes2 = XResult2.Descendants("subject");

//nodes1.Add(nodes2.Nodes());

// * Код для слияния ** Может кто-нибудь, пожалуйста, помогите мне.Заранее спасибо ... BB

Вот мой XResult1:

<subjects>
    <subject>
        <node id="1">
            Hi
        </node>
        <node id="2">
            Hi again
        </node>
        <node id="3">
            Hi once more
        </node>
    </subject>
</subjects>

Вот мой XResult2:

<subjects>
    <subject>
        <node id="4">
            Hello
        </node>
        <node id="5">
            Hello again
        </node>
    </subject>
</subjects>

И мой окончательный результат должен быть:

<subjects>
    <subject>
        <node id="1">
            Hi
        </node>
        <node id="2">
            Hi again
        </node>
        <node id="3">
            Hi once more
        </node>
        <node id="4">
            Hello
        </node>
        <node id="5">
            Hello again
        </node>

    </subject>
</subjects>

Ответы [ 2 ]

3 голосов
/ 08 февраля 2011

Вы хотите изменить:

XResult1.Descendants("subjects").FirstOrDefault(); 
XResult2.Descendants("subjects").FirstOrDefault();

до

XResult1.Descendants("subject").FirstOrDefault();
XResult2.Descendants("subject").FirstOrDefault(); 

Вот более полный пример:

XDocument document = XDocument.Load(@"C:\XResult1.xml");
XElement subjectElement = document.Descendants("subject").FirstOrDefault();

XDocument document2 = XDocument.Load(@"C:\XResult2.xml");
XElement subjectElement2 = document2.Descendants("subject").FirstOrDefault();

subjectElement.Add(subjectElement2.Nodes());
0 голосов
/ 08 февраля 2011

Если вы хотите объединить элементы внутри элемента subject, вам нужно пойти дальше вниз по дереву, поэтому установите для nodes1 и nodes2 следующее:

XElement nodes2 = XResult2.Descendants("subjects").Descendants("subject").FirstOrDefault();
...