Bonjour, avec mes seules recherches depuis 2jours, l'indice TIOBE de Xpath a surement pris plusieurs %, au final j’atterris qd mm ici
je dois partir du XML suivant :
dans ma fonction le PHP commence par :
Code xml : 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 <data number="5883" user="001" order="5883"> [...] </data> <data number="5884" user="001" order="5884"> <column> <parameter name="idcompte" type="cdata"><![CDATA[132]]></parameter> <parameter name="nomachat" type="cdata"><![CDATA[solde 2014]]></parameter> <parameter name="date" type="cdata"><![CDATA[2014-10-14]]></parameter> <parameter name="qte" type="cdata"><![CDATA[1]]></parameter> <parameter name="puht" type="cdata"><![CDATA[1002.86]]></parameter> <parameter name="idtva" type="cdata"><![CDATA[001]]></parameter> <parameter name="paye" type="string">1</parameter> <parameter name="idfourn" type="cdata"><![CDATA[098]]></parameter> <parameter name="idcat" type="cdata"><![CDATA[001]]></parameter> <parameter name="idclassif" type="cdata"><![CDATA[0]]></parameter> </column> </data> [...etc.]
et je vous liste ci-dessous mes syntaxes de filtrage testées au fil de mes lectures
Code php : Sélectionner tout - Visualiser dans une fenêtre à part $xml = simplexml_load_file($plgDatas.$q["table"].'.xml');
Dans le meilleur des cas mon tableau $result contient uniquement les attributs des 7 résultats voulus...sans les datas.
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 if ($q["id"]!="") {$xml = $xml->xpath('//data[@number='.$q["id"].' ] '); unset($q); } #OK if ($q["limit"]!="") {$xml = $xml->xpath('//data[position()<='.$q["limit"].']'); } #OK //if ($q['compt']!="") {$result= $xml->xpath('//parameter[@name="idcompte" and text()="'.$q["compt"].'"] '); } #OK 7 result mais que les attributs //if ($q['compt']!="") {$result= $xml->xpath('//column[parameter[@name="idcompte" and .="'.$q["compt"].'"]]'); } #OK 7 result mais que les attributs //if ($q['compt']!="") {$result= $xml->xpath('//parameter[@name="idcompte"]/text()="'.$q["compt"].'" '); } #non if ($q['compt']!="") {$result= $xml->xpath('//parameter[@name="idcompte"]/../parameter[text()="'.$q["compt"].'"]'); } #OK 7 result mais que attributs // if ($q['compt']!="") {$xml = $xml->xpath('//parameter[contains(text(),"'.$q["compt"].'")] ');} // nawack
Bref, je tente désespérément d'obtenir l'équivalent d'un SELECT idfourn FROM datas WHERE idfourn = $q['compt'] en SQL,
soit en français, tous les noeuds <data> contenant le noeud(petit-fils)<parameter> contenant l'attribut "idfourn" et dont la valeur du noeud soit $q['compt']
Par avance un millier de mercis.
Partager