What is the fastest way to combine two xml files into one
An XSLT transformation could do it:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="pXml1" select="''" />
<xsl:param name="pXml2" select="''" />
<xsl:param name="pRoot" select="'root'" />
<xsl:template match="/">
<xsl:variable name="vXml1" select="document($pXml1)" />
<xsl:variable name="vXml2" select="document($pXml2)" />
<xsl:element name="{$pRoot}">
<xsl:copy-of select="$vXml1/*/*" />
<xsl:copy-of select="$vXml2/*/*" />
</xsl:element>
</xsl:template>
</xsl:stylesheet>
Pass in the names of the files as parameters, as well as the name of the new root element.
Apply to any XML document, e.g. an empty one.
The easiest way to do this is using LINQ to XML. You can use either Union or Concat depending on your needs.
var xml1 = XDocument.Load("file1.xml");
var xml2 = XDocument.Load("file2.xml");
//Combine and remove duplicates
var combinedUnique = xml1.Descendants("AllNodes")
.Union(xml2.Descendants("AllNodes"));
//Combine and keep duplicates
var combinedWithDups = xml1.Descendants("AllNodes")
.Concat(xml2.Descendants("AllNodes"));