4
からルートノードでノードを交換する私が欲しいPHP:</p> <p>オリジナルXML :: DOMは、私は全体のノードから他のドキュメントから、ノードを更新する必要があり、別のDOM
<a>
<b>Bat</b>
</a>
出力:
<a>
<b>bi</b>
</a>
最初の試み:ドキュメント・によって置き換え
$original = "<a>
<b>Bat</b>
</a>";
$replace = "<b>Bi</b>";
$dom = new DOMDocument('1.0', 'utf-8');
$dom->loadXML($original);
$xpath = new DOMXpath($dom);
$b = $xpath->query('//b')->item(0);
$fragment = $dom->createDocumentFragment();
$fragment->appendXML($replace);
$dom->replaceChild($fragment, $b);
echo $dom->saveXML();
ERROR:
Fatal error: Uncaught exception 'DOMException' with message 'Not Found Error' in /home/zital/scripts/php/dom.php:17 Stack trace:
0 /home/zital/scripts/php/dom.php(17): DOMNode->replaceChild(Object(DOMDocumentFragment), Object(DOMElement))
1 {main} thrown in /home/zital/scripts/php/dom.php on line 17
第二の試み:ノード
$original = "<a>
<b>Bat</b>
</a>";
$replace = "<b>Bi</b>";
$dom = new DOMDocument('1.0', 'utf-8');
$dom->loadXML($original);
$xpath = new DOMXpath($dom);
$b = $xpath->query('//b')->item(0);
$dom2 = new DOMDocument('1.0', 'utf-8');
$dom2->loadXML($replace);
$replace = $dom2->documentElement;
$replace = $dom->importNode($replace, true);
$dom->replaceChild($replace, $b);
echo $dom->saveXML();
ERRORインポートして置き換える:
Fatal error: Uncaught exception 'DOMException' with message 'Not Found Error' in /home/zital/scripts/php/dom.php:42 Stack trace:
0 /home/zital/scripts/php/dom.php(42): DOMNode->replaceChild(Object(DOMElement), Object(DOMElement))
1 {main} thrown in /home/zital/scripts/php/dom.php on line 42
フォーク:D – ZiTAL
私は最初のコードについてshureしていません。 – splash58
は '$ b-> parentNode-> replaceChild(...'より良いオプションになりませんか? – Yoshi