The remove_child() function seems to have a bug. if the parent node of the node you are trying to delete is the same as the root node it will give you unexpected errors. I fixed this by checking if the parent node of the node i was deleting was the same as the document node. take a look at the function below if you are running into the same problem. $this->xmlData reffers to the domxml object inside the class i was using.
<?php
function deleteNode($ref, $levels) {
$parent = $ref->parent_node();
$root = $this->xmlData->document_element();
if($parent->node_name()==$root->node_name()) {
$parent = $this->xmlData->document_element();
}
if($parent->remove_child($ref)) {
return true;
} else {
exit("error removing node");
}
}
?>
DomNode->remove_child
(No version information available, might be only in CVS)
DomNode->remove_child — Supprime un fils de la liste des noeuds fils
Description
DomNode->remove_child() supprime le fils oldchild de la liste des noeuds fils du noeud courant. Si le fils n'a pu être retiré, ou si ce n'est pas un fils du noeud courant, DomNode->remove_child() retournera FALSE. Si le fils a pu être retiré, DomNode->remove_child() le retournera.
Exemple #1 Supprimer un noeud en DOM XML
<?php
include("exemple.inc");
if(!$dom = domxml_open_mem($xmlstr)) {
echo "Erreur lors de l'analyse d'un document\n";
exit;
}
$elements = $dom->get_elements_by_tagname("tbody");
$element = $elements[0];
$children = $element->child_nodes();
$child = $element->remove_child($children[0]);
echo "<pre>";
$xmlfile = $dom->dump_mem(true);
echo htmlentities($xmlfile);
echo "</pre>";
?>
Voir aussi domnode_append_child().
DomNode->remove_child
iloveitaly at gmail.com
04-Dec-2004 06:28
04-Dec-2004 06:28
