Bonjour à tous,
J'ai un xml qui se présente comme ça:
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <item> <title>Produit 1</title> <idlivre>1</idlivre> <pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> <dc:creator>admin</dc:creator> <wp:postmeta> <wp:meta_key>keyword</wp:meta_key> <wp:meta_value><![CDATA[adolescence]]></wp:meta_value> </wp:postmeta> ..... </item>
Je veux faire une recherche dans mon xml pour remonter tous les ITEM qui auraient dans le <titre> ou dans la <meta_value> du <postmeta> la valeur d'un mot clé passé en GET
J'y arrive à moitié avec ce code :
Avec echo $doc->saveXML($node) ."; j'affiche bien la valeur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 $searchTerm = $_GET[keyword]; $doc = new DOMDocument(); $doc->load('xml/boutique/products.xml'); $xpath = new DOMXPath( $doc ); $result = $xpath->query( '//wp:postmeta[ .//text()[contains( ., "'. addslashes($searchTerm) .'" )] ]' ); echo "Found: ". $result->length ."\n"; foreach ( $result AS $node ) { echo $doc->saveXML($node) ."<br />\n\n"; echo "Trouvé {$node->previousSibling->previousSibling->nodeValue},<br />" . " ID : {$node->parentNodes->nodeValue}<br /><br /><br /><br />\n"; }
Le PROBLEME : Je n'arrive pas à récupérer les valeurs indépendamment.
Je pouvoir afficher le <titre>, l'<ID> de l'ITEM dans lequel j'ai touvé la valeur ....
Mais avec {$node->parentNodes->nodeValue} j'affiche l'arbre en entier, sans distinction de noeud ni autre.
Comment faire donc pour :
- Chercher une valeur dans le xml
- Afficher les valeurs de l'item dans lequel on a trouvé cette valeur
J'ai cherché partout ... impossible à trouver.
Merci de votre aide !
Partager