1

Actullay、最初のxmlドキュメントからルートノードを除くすべての要素を取得し、新しいドキュメントの要素(以前のドキュメントのルート名と同じ名前)に子ノードとして挿入できるようにする必要があります。だから私はそれを達成するためにさまざまな方法を試しました。そのうちの1つは、最初のルートノードを削除してから、以下に示すように新しいノードに要素を追加しようとしています:

以下を試しましたが、達成できませんでした。

XDocument testDoc = XDocument.Parse(Mydocument);
testDoc.Descendants().Where(e => e.Name.LocalName == "rootName").Select(m=>m).Single().Remove();
var resultDoc = testDoc;

上記のコードでは、空の「{}」結果が返されます。

私の xml ドキュメントは次のようになります。

 <rootName xsi:schemaLocation="" xmlns:xsi="" xmlns="">
 <main>
 <child>
 </child>
 <anotherchild>
 </anotherchild>
 </main>
 </rootName>

もう 1 つの方法は、最初のドキュメントのすべての要素を次のように取得することです。

  var resultDoc = testDoc.Descendants(ns + "rootName").Elements();

上記のステートメントは、以下のようなことをする必要がある「testDoc」内の要素のリストを私に与えています、私は無知です:

 <AnotherDocument xsi:schemaLocation="" xmlns:xsi="" xmlns="">
 <firstNode>
 <rootName>

 <main>
 <child>
 </child>
 <anotherchild>
 </anotherchild>
 </main>

 </rootName>
 </firstNode>

これらの要素を上記のように新しいドキュメントに挿入する方法が正しい場合は、教えてください。そうでない場合は、この問題を解決する方法を教えてください。前もって感謝します。

4

3 に答える 3

1

rootName別のドキュメントの要素のコンテンツを、最初のドキュメント ルートの要素に置き換えることができます。

var xDoc = XDocument.Parse(Mydocument);
var anotherXDoc = XDocument.Load("anotherdata.xml");
XNamespace ns = "http://..."; // your xml namespance
var rootName = anotherXDoc.Descendants(ns + "rootName").First();
rootName.ReplaceNodes(xDoc.Root.Elements());
于 2013-10-21T07:49:08.947 に答える