複数の XML ファイルを 1 つの XDocument オブジェクトにマージしようとしています。
Merge は XDocument オブジェクトに存在しません。これが恋しい。
XDocument の Merge 拡張メソッドまたは同様のものを既に実装している人はいますか?
複数の XML ファイルを 1 つの XDocument オブジェクトにマージしようとしています。
Merge は XDocument オブジェクトに存在しません。これが恋しい。
XDocument の Merge 拡張メソッドまたは同様のものを既に実装している人はいますか?
私は自分で少し試しました:
var MyDoc = XDocument.Load("File1.xml");
MyDoc.Root.Add(XDocument.Load("File2.xml").Root.Elements());
良いか悪いかはわかりませんが、私にはうまくいきます:-)
実用的であるため、XDocument
vsは全か無かというわけではありません (Silverlight を使用しXmLDocument
ている場合を除きます)。XmlDoucument
XDocument
XmlDocument
ImportNode
とはいえ、 を使用してもXDocument
、おそらく を使用XNode.ReadFrom
してそれぞれをインポートし、それを単に.Add
メイン コレクションにインポートできます。
もちろん、ファイルが大きい場合は、XmlReader/XmlWriter
より効率的かもしれませんが、より複雑になります。幸い、XmlWriter
にはWriteNode
を受け入れるメソッドがあるXmlReader
ため、 の最初の子に移動してから、XmlReader
それを出力ファイルにブリッツするだけです。何かのようなもの:
static void AppendChildren(this XmlWriter writer, string path)
{
using (XmlReader reader = XmlReader.Create(path))
{
reader.MoveToContent();
int targetDepth = reader.Depth + 1;
if(reader.Read()) {
while (reader.Depth == targetDepth)
{
writer.WriteNode(reader, true);
}
}
}
}
回避策として、XSL ファイルを使用して XML ファイルをマージし、それを XDocument オブジェクトに変換することができます。