Combine two XML files into one file

advertisements

I have the same question as here: What is the fastest way to combine two xml files into one Unfortunately the answers given there don't work well.

I have exactly the same problem. I have two files:

XML1:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Results>
  <Memory>
    <instance00>
      <PageFaultsPersec>
        <sample time="9/8/2016 12:02:51 PM" value="1401.112" />
        <sample time="9/8/2016 12:02:52 PM" value="242.3494" />
        <sample time="9/8/2016 12:02:53 PM" value="303.1362" />
      </PageFaultsPersec>
      <AvailableBytes>
        <sample time="9/8/2016 12:02:51 PM" value="1.116967E+09" />
        <sample time="9/8/2016 12:02:52 PM" value="1.11702E+09" />
        <sample time="9/8/2016 12:02:53 PM" value="1.11761E+09" />
      </AvailableBytes>
    </instance00>
  </Memory>
</Results>

XML2:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Results>
  <Processor>
    <instance_Total>
      <PercentProcessorTime>
        <sample time="9/8/2016 12:02:51 PM" value="18.4567" />
        <sample time="9/8/2016 12:02:52 PM" value="3.032005" />
        <sample time="9/8/2016 12:02:53 PM" value="0" />
      </PercentProcessorTime>
      <PercentUserTime>
        <sample time="9/8/2016 12:02:51 PM" value="17.04996" />
        <sample time="9/8/2016 12:02:52 PM" value="3.03025" />
        <sample time="9/8/2016 12:02:53 PM" value="0" />
      </PercentUserTime>
      <PercentPrivilegedTime>
        <sample time="9/8/2016 12:02:51 PM" value="0.7413027" />
        <sample time="9/8/2016 12:02:52 PM" value="0" />
        <sample time="9/8/2016 12:02:53 PM" value="0" />
      </PercentPrivilegedTime>
    </instance_Total>
  </Processor>
</Results>

I want to get:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Results>
  <Memory>
    <instance00>
      <PageFaultsPersec>
        <sample time="9/8/2016 12:02:51 PM" value="1401.112" />
        <sample time="9/8/2016 12:02:52 PM" value="242.3494" />
        <sample time="9/8/2016 12:02:53 PM" value="303.1362" />
      </PageFaultsPersec>
      <AvailableBytes>
        <sample time="9/8/2016 12:02:51 PM" value="1.116967E+09" />
        <sample time="9/8/2016 12:02:52 PM" value="1.11702E+09" />
        <sample time="9/8/2016 12:02:53 PM" value="1.11761E+09" />
      </AvailableBytes>
    </instance00>
  </Memory>
  <Processor>
    <instance_Total>
      <PercentProcessorTime>
        <sample time="9/8/2016 12:02:51 PM" value="18.4567" />
        <sample time="9/8/2016 12:02:52 PM" value="3.032005" />
        <sample time="9/8/2016 12:02:53 PM" value="0" />
      </PercentProcessorTime>
      <PercentUserTime>
        <sample time="9/8/2016 12:02:51 PM" value="17.04996" />
        <sample time="9/8/2016 12:02:52 PM" value="3.03025" />
        <sample time="9/8/2016 12:02:53 PM" value="0" />
      </PercentUserTime>
      <PercentPrivilegedTime>
        <sample time="9/8/2016 12:02:51 PM" value="0.7413027" />
        <sample time="9/8/2016 12:02:52 PM" value="0" />
        <sample time="9/8/2016 12:02:53 PM" value="0" />
      </PercentPrivilegedTime>
    </instance_Total>
  </Processor>
</Results>

As I said, I tried answers, that were given in a link, but some of them don't work at all, and some just join two files without putting child elements properly.

The XML files are real files on a disk, not just strings.


This should do the trick:

var one = XElement.Load("fileOne.xml");
var two = XElement.Load("fileTwo.xml");
one.Add(two.FirstNode);
one.Save("combined.xml");