使用LINQ将xml字符串插入xml元素

时间:2014-02-18 09:26:01

标签: c# xml linq linq-to-xml xelement

我想要结合两个xml,其中一个是模板而另一个是数据,我该怎么做?

XML one:

<magazine>
  <content>
    <page no="1"></page>
    <page no="2"></page>
    <page no="3"></page>
  </content>
</magazine>

XML二:

<data>
  <page no="1">data1</Page>
  <page no="2">data2</Page>
  <page no="3">data3</Page>
</data>

1 个答案:

答案 0 :(得分:0)

Linq解决方案:

var content = XDocument.Load("content.xml")
                       .Root.Elements("page")
                       .ToDictionary(p => (int)p.Attribute("no"));

var xdoc = XDocument.Load("template.xml");

foreach (var page in xdoc.Descendants("page"))
{
    XElement data;
    if (!content.TryGetValue((int)page.Attribute("no"), out data))
        continue;

    page.ReplaceNodes(data.Nodes());
}