Liste avec fichier xml

ViPHP
ViPHP | 5462 Messages

02 avr. 2010, 00:23

pour la suite l'expression serait

Code : Tout sélectionner

<items> <item> <id>4</id> <title>T 4</title> <description>D 4</description> </item> <item> <id>3</id> <title>T 3</title> <description>D 3</description> </item> </items>
//item/id[text() = 4]
Modifié en dernier par stealth35 le 02 avr. 2010, 00:43, modifié 1 fois.

Eléphanteau du PHP | 12 Messages

02 avr. 2010, 00:26

Comme ceci ?
$query= $xpath->query('//item/id[text() = 4]')->item(0);

ViPHP
ViPHP | 5462 Messages

02 avr. 2010, 00:40

Comme ceci ?
$query= $xpath->query('//item/id[text() = 4]')->item(0);

oui :wink:

Eléphanteau du PHP | 12 Messages

02 avr. 2010, 11:34

Comme ceci ?
$query= $xpath->query('//item/id[text() = 4]')->item(0);

oui :wink:

J'obtiens cette erreur la au niveau de mon code :
Fatal error: Uncaught exception 'DOMException' with message 'Not Found Error' in ***\suppr_news.php:24 Stack trace: #0 ***\suppr_news.php(24): DOMNode->removeChild(Object(DOMElement)) #1 {main} thrown in***\suppr_news.php on line 24
Ligne 24 ( flèche ) :
$dom = new DomDocument();
$dom->load('../news.xml');
       
$xpath  = new DOMXPath($dom);
$query= $xpath->query('//item/id[text() = "4"]')->item(0); //si avec id
       
===> $dom->documentElement->removeChild($query); <===
       
echo $dom->saveXML();

ViPHP
ViPHP | 5462 Messages

02 avr. 2010, 15:46

oui parce que la on a supprimer que le nœud id donc :
//item/id[text() = 4]/..

Eléphanteau du PHP | 12 Messages

02 avr. 2010, 16:54

oui parce que la on a supprimer que le nœud id donc :
//item/id[text() = 4]/..
A merci super ! sa marche parfaitement !

Je crois que je vais embêter encore un peu mais est-ce que c'est possible de faire une liste des éléments ( en x/html ) contenu dans un xml ? j'ai regarder un petit peu mais je n'ai pas trouvé quelque chose qui me conviens

Juste une boucle avec mes différents titre par exemple pour que je puisse insérer une chexbox pour pouvoir supprimer celle cocher en fonction de l'id !

Enfin sa, sa serais l'idéal :D

Si on peux me mettre sur la voie !

Mammouth du PHP | 672 Messages

02 avr. 2010, 17:58

C'est faisable, oui.

Le plus simple, à mon avis, c'est d'utiliser xPath :
<?php
// Variables
$fichier = 'test.xml';
$racine = '/posts/';

//Ouverture et récupération du XML
$dom = new DomDocument();
$dom->load($fichier);

// xPath
// Ici, la requête va retourner tous les fils de la racine
// Il y a moyen d'améliorer la requete pour filtrer et/ou choisir les noeuds
$xpath = new Domxpath($dom);
$result = $xpath->query($racine.'*');
foreach($result as $noeud) {
	echo $noeud->nodeValue.'<br />';
}
?>

Eléphanteau du PHP | 12 Messages

03 avr. 2010, 09:11

C'est faisable, oui.

Le plus simple, à mon avis, c'est d'utiliser xPath :
<?php
// Variables
$fichier = 'test.xml';
$racine = '/posts/';

//Ouverture et récupération du XML
$dom = new DomDocument();
$dom->load($fichier);

// xPath
// Ici, la requête va retourner tous les fils de la racine
// Il y a moyen d'améliorer la requete pour filtrer et/ou choisir les noeuds
$xpath = new Domxpath($dom);
$result = $xpath->query($racine.'*');
foreach($result as $noeud) {
	echo $noeud->nodeValue.'<br />';
}
?>
Merci, je ne savais pas qu'on pouvais faire avec ça, bien utile le xPath !