Хорошо добавить элементы из второго файла очень просто:
XDocument doc1 = XDocument.Load(MapPath("file1.xml"));
doc1.Root.Element("Rules").Add(XDocument.Load(MapPath("file2.xml")).Root.Element("Rules").Elements("RewriterRule"));
// now save to third file with e.g.
doc1.Save(MapPath("updated.xml"));
// or overwrite first file e.g.
doc1.Save(MapPath("file1.xml"));
С другой стороны, термин «объединение» предполагает, что вы можете захотеть сделать что-то более сложное, например, определить элементы на основе некоторого идентификатора или ключа, а затем не просто добавить новые элементы, а перезаписать некоторые данные. Вам нужно будет предоставить более подробную информацию о том, какой именно процесс слияния вы хотите, если вам нужна помощь в написании кода.
[править] Вот пример того, как использовать основанный на DTD механизм ссылки на внешнюю сущность для включения файла фрагмента XML в другой документ: file1.xml выглядит следующим образом:
<!DOCTYPE example [
<!ENTITY e1 SYSTEM "fragment.xml">
]>
<example>
<data>
<item>1</item>
&e1;
</data>
</example>
фрагмент.xml выглядит следующим образом:
<?xml version="1.0" encoding="utf-8" ?>
<item>2</item>
Затем при чтении основного файла с помощью LINQ to XML и .NET 4.0 необходимо убедиться, что используемый вами XmlReader настроен для анализа DTD, например,
XDocument doc;
using (XmlReader xr = XmlReader.Create("file1.xml", new XmlReaderSettings() { DtdProcessing = System.Xml.DtdProcessing.Parse }))
{
doc = XDocument.Load(xr);
}