As of PHP 5.1.6 with libxml 2.6.26 and DOM/XML API version 20031129, importNode[] does nothing if attempting to import from the same document. Meaning, if you do an $ret = importNode and then appendChild[$ret] or insertBefore[$ret, ...] then you will end up *moving* the node instead of ending up with a copy.
If you expect importNode to give you a copy of the source [in this case, a deep copy] then you must account for them being from the same document. This function addresses this:
// Import $b into $a's document
function myimport[$a, $b]
{
if [$a->ownerDocument->isSameNode[$b->ownerDocument]]
{
$temp = new DOMDocument[];
$ret = $temp->importNode[$b, TRUE];
return $a->ownerDocument->importNode[$ret, TRUE];
}
else
{
return $a->ownerDocument->importNode[$b, TRUE];
}
}
?>
[Function was freshly coded for this note but I based it off another, working function of mine.]
This function checks if the documents are the same and uses a new document [guaranteed to be different this way] to force a copy into $temp and then force a copy back into $a->ownerDocument.
Obviously, no error checking has been done.
Creating innerHTML and outerHTML
class DOMHTMLElement extends DOMElement
{
function __construct[] { parent::__construct[];}
________số 8
public function outerHTML[]
{
$doc = new DOMDocument[];
$doc->appendChild[$doc->importNode[$this, true]];
$content = $doc->saveHTML[];
return $content;
}
}
If you expect importNode to give you a copy of the source [in this case, a deep copy] then you must account for them being from the same document. This function addresses this:
0
If you expect importNode to give you a copy of the source [in this case, a deep copy] then you must account for them being from the same document. This function addresses this:
1
If you expect importNode to give you a copy of the source [in this case, a deep copy] then you must account for them being from the same document. This function addresses this:
2
If you expect importNode to give you a copy of the source [in this case, a deep copy] then you must account for them being from the same document. This function addresses this:
3
If you expect importNode to give you a copy of the source [in this case, a deep copy] then you must account for them being from the same document. This function addresses this:
4
If you expect importNode to give you a copy of the source [in this case, a deep copy] then you must account for them being from the same document. This function addresses this:
5
If you expect importNode to give you a copy of the source [in this case, a deep copy] then you must account for them being from the same document. This function addresses this:
6
If you expect importNode to give you a copy of the source [in this case, a deep copy] then you must account for them being from the same document. This function addresses this:
7
If you expect importNode to give you a copy of the source [in this case, a deep copy] then you must account for them being from the same document. This function addresses this:
8
If you expect importNode to give you a copy of the source [in this case, a deep copy] then you must account for them being from the same document. This function addresses this:
9// Import $b into $a's document
0
function myimport[$a, $b]
{
if [$a->ownerDocument->isSameNode[$b->ownerDocument]]
{
$temp = new DOMDocument[];
$ret = $temp->importNode[$b, TRUE];
return $a->ownerDocument->importNode[$ret, TRUE];
}
else
{
return $a->ownerDocument->importNode[$b, TRUE];
}
}
?>
// Import $b into $a's document
function myimport[$a, $b]
{
if [$a->ownerDocument->isSameNode[$b->ownerDocument]]
{
$temp = new DOMDocument[];
$ret = $temp->importNode[$b, TRUE];
return $a->ownerDocument->importNode[$ret, TRUE];
}
else
{
return $a->ownerDocument->importNode[$b, TRUE];
}
}
?>
1// Import $b into $a's document
2
function myimport[$a, $b]
{
if [$a->ownerDocument->isSameNode[$b->ownerDocument]]
{
$temp = new DOMDocument[];
$ret = $temp->importNode[$b, TRUE];
return $a->ownerDocument->importNode[$ret, TRUE];
}
else
{
return $a->ownerDocument->importNode[$b, TRUE];
}
}
?>
// Import $b into $a's document
3
function myimport[$a, $b]
{
if [$a->ownerDocument->isSameNode[$b->ownerDocument]]
{
$temp = new DOMDocument[];
$ret = $temp->importNode[$b, TRUE];
return $a->ownerDocument->importNode[$ret, TRUE];
}
else
{
return $a->ownerDocument->importNode[$b, TRUE];
}
}
?>
// Import $b into $a's document
4
function myimport[$a, $b]
{
if [$a->ownerDocument->isSameNode[$b->ownerDocument]]
{
$temp = new DOMDocument[];
$ret = $temp->importNode[$b, TRUE];
return $a->ownerDocument->importNode[$ret, TRUE];
}
else
{
return $a->ownerDocument->importNode[$b, TRUE];
}
}
?>
// Import $b into $a's document
5
function myimport[$a, $b]
{
if [$a->ownerDocument->isSameNode[$b->ownerDocument]]
{
$temp = new DOMDocument[];
$ret = $temp->importNode[$b, TRUE];
return $a->ownerDocument->importNode[$ret, TRUE];
}
else
{
return $a->ownerDocument->importNode[$b, TRUE];
}
}
?>
// Import $b into $a's document
6
function myimport[$a, $b]
{
if [$a->ownerDocument->isSameNode[$b->ownerDocument]]
{
$temp = new DOMDocument[];
$ret = $temp->importNode[$b, TRUE];
return $a->ownerDocument->importNode[$ret, TRUE];
}
else
{
return $a->ownerDocument->importNode[$b, TRUE];
}
}
?>
// Import $b into $a's document
7
function myimport[$a, $b]
{
if [$a->ownerDocument->isSameNode[$b->ownerDocument]]
{
$temp = new DOMDocument[];
$ret = $temp->importNode[$b, TRUE];
return $a->ownerDocument->importNode[$ret, TRUE];
}
else
{
return $a->ownerDocument->importNode[$b, TRUE];
}
}
?>
// Import $b into $a's document
8
function myimport[$a, $b]
{
if [$a->ownerDocument->isSameNode[$b->ownerDocument]]
{
$temp = new DOMDocument[];
$ret = $temp->importNode[$b, TRUE];
return $a->ownerDocument->importNode[$ret, TRUE];
}
else
{
return $a->ownerDocument->importNode[$b, TRUE];
}
}
?>
// Import $b into $a's document
9
function myimport[$a, $b]
{
if [$a->ownerDocument->isSameNode[$b->ownerDocument]]
{
$temp = new DOMDocument[];
$ret = $temp->importNode[$b, TRUE];
return $a->ownerDocument->importNode[$ret, TRUE];
}
else
{
return $a->ownerDocument->importNode[$b, TRUE];
}
}
?>