2016-06-22 5 views
0

LinQとXmlで経験はありません。ファイルからxmlノードを既存のxmlファイルに追加します

file1.xml

<?xml version="1.0" encoding="utf-8"?> 
<RootNode> 
<SubNode> 

<NodeA id="1" /> 
<NodeB id="2" /> 
<NodeC id="3" /> 

</SubNode> 
<LonelyNode/> 
</RootNode> 

file2.xml

<?xml version="1.0" encoding="utf-8"?> 
<RootNode> 
<SubNode> 

<NodeD id="1" /> 
<NodeE id="2" /> 
<NodeF id="3" /> 

</SubNode> 
<LonelyNode/> 
</RootNode> 

実際のコードを次のように私は2つのXMLファイルを結合する必要が

string fileName1 = "file1.xml"; 
string fileName2 = "file2.xml"; 

string filePath_file1 = String.Format("{0}{1}", rootDirectory, fileName1); 
string filePath_file2 = String.Format("{0}{1}", rootDirectory, fileName2); 

// create xml document from file1.xml 
var document = XDocument.Load(filePath_file1.xml); 

// add file2.xml 
document.Root.Add(XDocument.Load(filePath_file2).Root.Elements()); 
Console.WriteLine(document); 
Console.ReadLine(); 

実際の出力

<?xml version="1.0" encoding="utf-8"?> 
<RootNode> 

<SubNode> 
    <NodeA id="1" /> 
    <NodeB id="2" /> 
    <NodeC id="3" /> 
</SubNode> 
<LonelyNode/> 

<SubNode> 
    <NodeD id="1" /> 
    <NodeE id="2" /> 
    <NodeF id="3" /> 
</SubNode> 
<LonelyNode/> 

</RootNode> 

は、私が最初のファイルにコピーするノードの特定することができますどのように出力

<?xml version="1.0" encoding="utf-8"?> 
<RootNode> 
<SubNode> 

<NodeA id="1" /> 
<NodeB id="2" /> 
<NodeC id="3" /> 
<NodeD id="1" /> 
<NodeE id="2" /> 
<NodeF id="3" /> 

</SubNode> 
<LonelyNode/> 
</RootNode> 

を望んでいましたか?私は<SubNode>の内容をfile2からのみコピーしたいと思います。

答えて

0

Rootを追加するのではなく、Elementメソッドを使用してSubNode要素を見つけて、他のドキュメントの要素を追加するのではなく、ほぼそこにあります。

document.Root 
     .Element("SubNode") 
     .Add(XDocument.Load(filePath_file2).Root.Element("SubNode").Elements()); 

このDemo

出力チェック:

<RootNode> 
    <SubNode> 
    <NodeA id="1" /> 
    <NodeB id="2" /> 
    <NodeC id="3" /> 
    <NodeD id="1" /> 
    <NodeE id="2" /> 
    <NodeF id="3" /> 
    </SubNode> 
    <LonelyNode /> 
</RootNode> 
+0

それは動作しますが、あなたに感謝!サブノードの内容をノード名(NodeA、NodeB、...)でソートすることもできます。 – Muflix

+1

可能です。 –

+0

ここでソートするための解決策が見つかりましたhttp://stackoverflow.com/questions/3469801/sorting-all-the-elements-in-a-xdocumentありがとう – Muflix

関連する問題