cloning Dom Documents or Nodes does not work
| Bug #37277 | cloning Dom Documents or Nodes does not work | ||||
|---|---|---|---|---|---|
| Submitted: | 2006-05-02 15:04 UTC | Modified: | 2006-05-03 08:45 UTC | ||
| From: | frank at cleverbridge dot com | Assigned: | rrichards (profile) | ||
| Status: | Closed | Package: | DOM XML related | ||
| PHP Version: | 5.1.3 | OS: | Linux 2.6.12-1.1381_FC3 i686 ath | ||
| Private report: | No | CVE-ID: | None | ||
[2006-05-02 15:04 UTC] frank at cleverbridge dot com
Description:
------------
Since 5.1.3 you cannot copy a dom object. References still work. The implementation of the xml extension seam to have changed.
Reproduce code:
---------------
Since 5.1.3 the following code does not work anymore:
<?php
$dom1 = new DomDocument('1.0', 'UTF-8');
$xml = '<foo />';
$dom1->loadXml($xml);
print "<xmp>\n".$dom1->saveXML()."</xmp>\n";
$node = clone $dom1->documentElement;
$dom2 = new DomDocument('1.0', 'UTF-8');
$dom2->appendChild($dom2->importNode($node->cloneNode(true), TRUE));
print "<xmp>\n".$dom2->saveXML()."</xmp>\n";
$dom3 = clone $dom1;
print "<xmp>\n".$dom3->saveXML()."</xmp>\n";
?>
Expected result:
----------------
<?xml version="1.0"?>
<foo/>
<?xml version="1.0"?>
<foo/>
<?xml version="1.0"?>
<foo/>
Actual result:
--------------
<?xml version="1.0"?> <foo/>
Warning: DOMNode::cloneNode() [function.DOMNode-cloneNode]: Couldn't fetch DOMElement in /www/content/
spielzeug/xslt/513.php on line 13
Warning: DOMDocument::importNode() expects parameter 1 to be DOMNode, null given in /www/content/
spielzeug/xslt/513.php on line 13
Warning: DOMNode::appendChild() expects parameter 1 to be DOMNode, null given in /www/content/
spielzeug/xslt/513.php on line 13
<?xml version="1.0" encoding="UTF-8"?>
Warning: DOMDocument::saveXML() [function.DOMDocument-saveXML]: Couldn't fetch DOMDocument in /www/content/
spielzeug/xslt/513.php on line 19
Patches
Pull Requests
History
AllCommentsChangesGit/SVN commits
[2006-05-02 20:32 UTC] rrichards@php.net
[2006-05-03 08:45 UTC] rrichards@php.net