2009-08-13 37 views
1

のマージ:私は次のようになり、いくつかのXDocuments持つ類似したXML文書に

XDocument mergedXmlDocs = new XDocument(new XElement("ACResponse")); 

そして、他のXDocumentsからノードを追加しよう:

C#では

<Test> 
    <element 
     location=".\jnk.txt" 
     status="(modified)"/> 
<element 
    location=".\jnk.xml" 
    status="(overload)"/> 
</Test> 

を、私は新しいXDocumentを作成

for (ti = 0; (ti < 3); ++ti) 
{ 
    var query = from xElem in xDocs[(int)ti].Descendants("element") 
     select new XElement(xElem); 

    foreach (XElement xElem in query) 
    { 
     mergedXmlDocs.Add(xElem); 
    } 
} 

実行時にAddによって不正な形式のドキュメントが作成されるというエラーが表示されます。
何が間違っていますか?
おかげで...

(私はこの質問を見た - Merge XML documents - 。しかし、XSLTの作成は簡単な操作のように思える何のための余分な手間のように思え変換)

+0

これを実行しようとしている言語は何ですか? –

+0

C#。 LINQが利用可能です... – Number8

答えて

4

あなたは非常に近いです。

mergedXmlDocs.Add(xElem); 

mergedXmlDocs.Root.Add(xElem); 

の問題は、各XMLドキュメントは1つのだけルートノードを含むことができることである行を変更しよう。既存のコードは、すべてのノードをルートレベルで追加しようとしています。代わりにそれらを既存の最上位ノードに追加する必要があります。

+0

ありがとう、私はXDocumentのプロパティに深くは見ていませんでした... – Number8

0

私は確かにどのようなプログラミング言語ではありませんよ、あなたほとんどのプログラミング言語には、広範なXMLサポートクラスがあります。それらのほとんどは解析や要素の追加を可能にします。私は1つのメインファイルを持っていて、新しいファイルからマスターファイルに要素を追加するたびに新しいファイルを解析します。

編集:申し訳ありませんが、あなたは既にこれを正確に行っているようです。

+0

これは私がやろうとしていることです...いくつかのXDocumentsのすべての 'element'要素をmergedXmlDocs XDocumentに追加します。 実行時エラー:「この操作では、構造化文書が正しく作成されません。 – Number8

関連する問題