Bonjour
Je débute en PHP pour faire une extraction d'un fichier XML.
Je me suis inspiré du tutorial de Stephane Ligoza http://jerome.developpez.com/xmlxsl/xpath/
Je bute sur un problème de selection des éléments d'après leur contenu (ils n'ont pas d'attribut)
J'y arrive avec le code PHP suivant mais
- sur un nombre de données important je trouve pas que cela soit optimisé
- si mes données ne sont pas ordonnées je n'obtiens pas les bonnes valeurs et le rajout d'un test if va m'alourdir encore le code
Voici ma structure
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 $query = "//*[starts-with(name(),'CODE')]"; $selected = $xpath->query($query); $K=0; foreach ($selected as $code) { $ident='XA'; $posstr=strpos($code->nodeValue,$ident); if (!($posstr === false)){ if ($posstr==0) { $Ident[$K] = $code->nodeValue; $Prix[$K] = $code->nextSibling->nextSibling->nodeValue; $K++; } } }
Je pense que je n'utilise pas la bonne expression pour mon extraction
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 <AAA> <XXX> <DDD> <CODE>XAFT</CODE> <NAME>MON NOM</NAME> <PRIX>100</PRIX> </DDD> <DDD> <CODE>XAGT</CODE> <NAME>PLUS CHER</NAME> <PRIX>120</PRIX> </DDD> <DDD> <CODE>XAUT</CODE> <PRIX>80</PRIX> <NAME>MOINS CHER</NAME> </DDD> <DDD> <CODE>YBUT</CODE> <PRIX>200</PRIX> <NAME>DESORDONNE</NAME> </DDD> <DDD> <CODE>YAFT</CODE> <PRIX>220</PRIX> <NAME>ORDONNE</NAME> </DDD> </XXX> </AAA>
Quelle expression XPATH me permettrait d'extraire les éléments CODE qui débute par 'XA' et récupérer les informations des éléments frères associé (prix)
Merci de votre aide
Partager