10

特定のソースからXML文字列を取得します。DOMDocumentオブジェクトを作成し、その中にXML文字列をロードします(DOMDocument :: loadXML()を使用)。次に、必要なノード(もちろん、DOMNode)が見つかるまで、さまざまなメソッド(DOMXPathなど)を使用してXMLドキュメントをナビゲートします。

このノードには多数の子孫があり、そのノード全体(およびその子孫)を取得して、そこから新しいDOMDocumentオブジェクトを作成したいと思います。これを行う方法がわかりません。新しいDOMDocumentを作成してDOMDocument::importNode()を使用しようとしましたが、これはDOMDocumentにすでにメインドキュメントノードが含まれている場合にのみ機能するようです。この場合、インポートされたノードはメインドキュメントノードの子として追加されます。これは私が望んでいることではありません-インポートされたノードをDOMDocumentメインノードにしたいと思います。

これを行うためのより簡単な方法(つまり、独自のドキュメントに変換したい元のXMLの部分を抽出するためのより簡単な方法)があるかもしれませんが、私はそれを知りません。私はDOMDocumentに比較的慣れていませんが、SimpleXMLElementを使用していて煩わしいほどです。

4

2 に答える 2

19

新しいDOMDocumentを作成し、それにappendChild()を呼び出して、ルートノードを追加することもできます。

$new=新しいDomDocument;
$ new-> appendChild($ new-> importNode($ node、true));

それは私のために働いた。

于 2010-03-03T18:08:30.647 に答える
1

新しいDOMDocumentを作成して、ノードのXMLをロードすることはできませんか?

$new = new DOMDocument;
$new->loadXML($node->ownerDocument->saveXML($node));

今は試すことができませんが、うまくいくはずです。

于 2010-02-10T12:49:33.783 に答える