par
béka » 26 juil. 2007, 10:10
Bonjour tout le monde, je voudrais comprendre ce qui ne va pas dans ce code pour supprimer un noeud de mon fichier xml
<?
$matrixFile = '../'.$cfg['ressources_root'].'matrix.xml';
$domMatrix = new DOMDocument('1.0','UTF-8');
$domMatrix->load($matrixFile);
$root = $domMatrix->documentElement;
$xpMatrix = new DOMXPath($domMatrix);
//echo $id; ici id=9
$linkDelete = $xpMatrix->query('//link/item[@id="'.$id.'"]')->item(0);
$del = $root->removeChild($linkDelete);
$domMatrix->save($matrixFile);
?>
et voici le fichier xml correspondant
Code : Tout sélectionner
<root>
<link id="9">
<criteria idcat="1" idcrit="1"/>
<item id="9"/>
</link>
</root>
EDIT :
J'ai trouvé la solution, en fait il fallait mettre dans ma requête :
<? $linkDelete = $xpMatrix->query('//link/item[@id="'.$id.'"]/..')->item(0); ?>
Dans ce cas, pourquoi ne peut-on pas utiliser
<? $linkDelete = $xpMatrix->query('//link/parent::link[@id="'.$id.'"]/..')->item(0); ?>
?
Bonjour tout le monde, je voudrais comprendre ce qui ne va pas dans ce code pour supprimer un noeud de mon fichier xml
[php]
<?
$matrixFile = '../'.$cfg['ressources_root'].'matrix.xml';
$domMatrix = new DOMDocument('1.0','UTF-8');
$domMatrix->load($matrixFile);
$root = $domMatrix->documentElement;
$xpMatrix = new DOMXPath($domMatrix);
//echo $id; ici id=9
$linkDelete = $xpMatrix->query('//link/item[@id="'.$id.'"]')->item(0);
$del = $root->removeChild($linkDelete);
$domMatrix->save($matrixFile);
?>
[/php]
et voici le fichier xml correspondant
[code]
<root>
<link id="9">
<criteria idcat="1" idcrit="1"/>
<item id="9"/>
</link>
</root>[/code]
[b]EDIT : [/b]
J'ai trouvé la solution, en fait il fallait mettre dans ma requête :
[php]<? $linkDelete = $xpMatrix->query('//link/item[@id="'.$id.'"]/..')->item(0); ?>[/php]
Dans ce cas, pourquoi ne peut-on pas utiliser [php]<? $linkDelete = $xpMatrix->query('//link/parent::link[@id="'.$id.'"]/..')->item(0); ?>[/php] ?