【问题标题】:Add xml nodes from file into existing xml file将文件中的 xml 节点添加到现有的 xml 文件中
【发布时间】:2016-06-22 15:44:22
【问题描述】:

我对 LinQ 和 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>

实际代码

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>

如何指定要复制到第一个文件的节点?我只想从 file2 复制 &lt;SubNode&gt; 内容。

【问题讨论】:

    标签: c# linq-to-xml


    【解决方案1】:

    你快到了,而不是使用Element方法添加到Root找到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>
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多