将xml节点从文件添加到现有xml文件中

时间:2016-06-22 07:32:06

标签: c# linq-to-xml

我对LinQ和Xml没有经验。我需要加入两个xml文件,如下所示

file1.xml

square

file2.xml

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

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

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

实际代码

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

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

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

实际输出

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>

如何具体将节点复制到第一个文件?我只想从file2复制<?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> 内容。

1 个答案:

答案 0 :(得分:0)

您几乎就在那里,而不是使用Root方法添加SubNode查找Element元素,然后添加其他文档中的元素。

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>