Bonjour.
J'essaie désespérément de parser un fichier XML en PHP.
Je n'arrive pas à utiliser la fonction children().
Mes noms de tags sont dynamiques.
Exemple de structure XML:
Je charge mon fichier XML comme ceci:
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 <DATA> <myName_1> <champ_1> <field>test1</field> <country>test2</country> </champ_1> </myName_1> <myName_2> <champ_2> <field>test3</field> <country>test4</country> </champ_2> <champ_3> <field>test5</field> <country>test6</country> </champ_3> </myName_2> </DATA>
Si je regarde le contenu de $root avec var_dump(), je constate que ma variable contient bien ma structure:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $xmldoc = new DomDocument( '1.0' ); $xmldoc->preserveWhiteSpace = false; $xmldoc->formatOutput = true; $xml = file_get_contents("myFile.xml"); $xmldoc->loadXML($xml,LIBXML_NOBLANKS); $root = $xmldoc->getElementsByTagName('DATA')->item(0);
Mais bizarrement mes tags intermédiaires (myName, champ, field, country) n'apparaissent pas.
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
34
35
36 object(DOMElement)#1009 (17) { ["tagName"]=> string(4) "DATA" ["schemaTypeInfo"]=> NULL ["nodeName"]=> string(4) "DATA" ["nodeValue"]=> string(30)=> "test1test2test3test4test5test6" ["nodeType"]=> int(1) ["parentNode"]=> string(22) "(object value omitted)" ["childNodes"]=> string(22) "(object value omitted)" ["firstChild"]=> string(22) "(object value omitted)" ["lastChild"]=> string(22) "(object value omitted)" ["previousSibling"]=> NULL ["attributes"]=> string(22) "(object value omitted)" ["ownerDocument"]=> string(22) "(object value omitted)" ["namespaceURI"]=> NULL ["prefix"]=> string(0) "" ["localName"]=> string(4) "DATA" ["baseURI"]=> string(83) "file:///C:/Program%20Files%20(x86)/EasyPHP-12.1/www/web_tomato/primerManagment/www/" ["textContent"]=> string(30)=> "test1test2test3test4test5test6" }
Bref.
Quand j'essaie de parser ma structure XML avec la fonction children() comme ceci:
J'obtiens tout le temps le message d'erreur suivant portant sur la ligne appelant la fonction children() :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $test = $root->children();
Et je ne comprends vraiment pas pourquoi ... C'est comme si la fonction children() n'existait pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Fatal error: Call to undefined method DOMElement::children()
Si vous avez besoin de plus d'informations n'hésitez pas à me le demander.
Merci beaucoup !
Partager