Question

i want combine two xml that one of them is template and other is data, how can i do this?

XML one:

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

XML two:

<data>
  <page no="1">data1</Page>
  <page no="2">data2</Page>
  <page no="3">data3</Page>
</data>
Était-ce utile?

La solution

Linq solution:

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());
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top