Salut.
Le contexte :
- J'ai un script qui charge un fichier xml.
- Via xpath je récupère les nœuds dont j'ai besoin.
- Ensuite avec la propriété
j'affiche les enfants de mon noeud courant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part childNodes
Le probleme :
considère les retours chariots après mes balises comme des enfants du nœud et me renvoi un
Code : Sélectionner tout - Visualiser dans une fenêtre à part childNodes.#text
Le code :
Le fichier XML :
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 $this->oDom= new domDocument(); $this->oDom->load('mon/fichier/xml'); $oDomXpath = new DOMXpath($this->oDom); $oDomXpath->preserveWhiteSpace = false; $nodeList = $oDomXpath->query('//type'); if($nodeList) { $aPlayerData = array(); foreach ($nodeList as $node) { foreach($node->childNodes as $nodeChild) { $aPlayerData[$node->getAttribute('id')][$nodeChild->nodeName] = $nodeChild->nodeValue; } } }
Le résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13<?xml version="1.0" encoding="UTF-8"?> <data> <type id="A"> <value>90</value> </type> <type id="B"> <value>53</value> </type> <type id="C"> <value>85</value> </type> </data>
La question :Array
(
[A] => Array
(
[#text] =>
[value] => 90
)
[B] => Array
(
[#text] =>
[value] => 53
)
[C] => Array
(
[#text] =>
[value] => 85
)
)
Est ce que quelqu'un sais comment éviter cela ?
Aurais je oublier un truc ?
J'ai pensé tester la valeur de chaque nœud et afficher ou non l'enfant, mais je trouve cette solution crado et je suis sur qu'on peu éviter ça autrement.
A titre indicatif : La propriéténi change rien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part preserveWhiteSpace
Merci d'avance
Partager