16

複数の XML ファイルを 1 つの XDocument オブジェクトにマージしようとしています。

Merge は XDocument オブジェクトに存在しません。これが恋しい。

XDocument の Merge 拡張メソッドまたは同様のものを既に実装している人はいますか?

4

4 に答える 4

27

私は自分で少し試しました:

var MyDoc = XDocument.Load("File1.xml");
MyDoc.Root.Add(XDocument.Load("File2.xml").Root.Elements());

良いか悪いかはわかりませんが、私にはうまくいきます:-)

于 2008-11-11T10:20:14.917 に答える
3

実用的であるため、XDocumentvsは全か無かというわけではありません (Silverlight を使用しXmLDocumentている場合を除きます)。XmlDoucumentXDocumentXmlDocumentImportNode

とはいえ、 を使用しても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);
                }                
            }
        }
    }
于 2008-11-11T08:56:49.093 に答える
0

回避策として、XSL ファイルを使用して XML ファイルをマージし、それを XDocument オブジェクトに変換することができます。

于 2008-11-11T08:20:10.180 に答える