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
(PHP 4 >= 4.2.0)
DomNode::remove_child — Supprime un fils de la liste des noeuds fils
Description
Cette fonction 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, la fonction
retournera FALSE. Si le fils a pu être retiré, la fonction
le retournera.
Exemple #1 Supprimer un noeud
<?php
include("example.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().
iloveitaly at gmail.com
04-Dec-2004 06:28
