|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Développeur informatique Inscription : août 2006 Messages : 27 ![]() |
Bonjour,
J'utilise php et simplexml. Je rencontre actuellement le problème suivant : J'ai ce fichier xml Code XML :
que j'ouvre ainsi $xml= simplexml_load_file('monFichier.xml'); et j'aimerai filtrer les informations pour ne retenir que celles qui n'ont pas d'attribut et celles qui ont l'attribut type="a". Est-il possible de faire cela avec un xpath ? Encore mieux, est-il possible de faire cela sans passer par un xpath, en complétant cet appel $xml->information1 avec l'information type="a", directement sans passer par une condition if ? Merci de votre aide |
||
|
|
00
|
|
|
#2 | ||
![]() ![]() |
je pense que quelquechose de ce style te conviendra : ( http://fr2.php.net/manual/fr/functio...ment-xpath.php )
Code :
Récupération des noeuds (~~balises) fils de <racine> dont le nom commence par "information" et qui n'ont pas d'attribut "type" ou dont l'attribut "type" vaut "a"
__________________
Rédacteur "éclectique" (XML, IRC, Web...) Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC) je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque ! pensez à la balise [code] (bouton #) et au tag (en bas)
|
||
|
|
00
|
|
|
#3 | ||
|
Invité de passage
![]() Développeur informatique Inscription : août 2006 Messages : 27 ![]() |
Bonjour et merci pour cette réponse.
Je me suis mal exprimé lorsque j'ai dit "j'aimerai filtrer les informations", en fait pour le xml cité en exemple j'aimerai récupérer les infos Code :
|
||
|
|
00
|
|
|
#4 |
![]() ![]() |
C'est parce qu'il te faut ensuite parcourir le résultat du XPath...
et pas ton document XML (sinon effectivement ça sert à rien)
__________________
Rédacteur "éclectique" (XML, IRC, Web...) Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC) je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque ! pensez à la balise [code] (bouton #) et au tag (en bas)
|
|
|
00
|
|
|
#5 | |
|
Invité de passage
![]() Développeur informatique Inscription : août 2006 Messages : 27 ![]() |
Citation:
Mais dans ce cas là si je fais un Code :
$test=$xml->xpath('/racine/*[not(@type) or @type= "a"]'); |
|
|
|
00
|
|
|
#6 |
![]() ![]() |
si tu veux avoir un nom de balise spécifique, il te faut alors modifier le XPath en conséquence...
celui que je t'ai donné récupèrera toutes les balises dont le nom commence par "information" ensuite, si tu ne veux que les balises "information1" : Code :
/racine/information1[not(@type) or @type = "a"]
__________________
Rédacteur "éclectique" (XML, IRC, Web...) Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC) je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque ! pensez à la balise [code] (bouton #) et au tag (en bas)
|
|
|
00
|
|
|
#7 | ||
|
Invité de passage
![]() Développeur informatique Inscription : août 2006 Messages : 27 ![]() |
Merci pour les réponses.
C'est dommage, ça rend les manipulations un peu lourdingue... J'aurais aimé une solution qui me permette de n'utiliser qu'un seul fichier xml tout en faisant l'impasse à un xml qui contient des informations redondantes de type Code XML :
Le tout en évitant de faire trop d'appels via xpath. |
||
|
|
00
|
|
|
#8 | ||
![]() ![]() |
dans ce cas, il te suffit de récupérer bloc avec un XPath...
après tu as l'élément bloc, tu peux faire toutes tes manips, exemple : Code :
__________________
Rédacteur "éclectique" (XML, IRC, Web...) Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC) je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque ! pensez à la balise [code] (bouton #) et au tag (en bas)
|
||
|
|
00
|
|
|
#9 | |||
|
Invité de passage
![]() Développeur informatique Inscription : août 2006 Messages : 27 ![]() |
Citation:
Pas chiant le gars... |
|||
|
|
00
|
|
|
#10 |
![]() ![]() |
Dans ce cas, il va te falloir modifier le tout... éventuellement, tu peux faire une petite fonction qui te retrie le tableau, mais le plus simple à l'air d'être de toutes façon l'utilisation "massive" d'XPath, ou alors il te faudra peut-être te tourner vers une autre lib XML (comme DOM)...
__________________
Rédacteur "éclectique" (XML, IRC, Web...) Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC) je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque ! pensez à la balise [code] (bouton #) et au tag (en bas)
|
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Développeur informatique Inscription : août 2006 Messages : 27 ![]() |
Bah, je vais séparer les infos en deux blocs distincts, et utiliser une fois le xpath, c'est encore la meilleure solution.
C'est dommage qu'il n'y ait pas de variante à $xml->information1 avec la possibilité d'avoir un attribut en paramètre. En tout cas merci pour les suggestions ! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com