J'essaie de parcourrir un fichier XML qui décrit une base de données
relationnelle (juste la structure). Ce fichier a été produit par VS.NET.
Comment faire avec l'implémentation DOM de PHP5? Les docs sont assez
incomplètes là dessus.
Ici $nodes me donne TOUS les neouds de tag <complexType>. Il met donc "à
plat" le fichier XML et je perds la structure du fichier. Comment faut-il
parcourrir récursivement un tel fichier XML? Comment lire la définition des
tables "client" et "country" ?
Merci.
Voici le fichier XML joint : (pour ceux qui connaissent VS.NET C#, il s'agit
d'un DataSet.GetXmlSchema())
Comment faire avec l'implémentation DOM de PHP5? Les docs sont assez incomplètes là dessus.
La documentation est déjà disponible sur le site w3.org. Elle est on ne peut plus précise.
Ici $nodes me donne TOUS les neouds de tag <complexType>.
Normal, comme son nom l'indique, getElementsByTagName() retourne tous les éléments dans le nom est celui indiqué.
Il met donc "à plat" le fichier XML et je perds la structure du fichier.
Je ne comprends pas.
Sinon, pour trouver rapidement des données précises, mieux vaut utiliser une addresse XPath (qui renvoit une liste de noeuds).
nospam
TTT wrote:
J'essaie de parcourrir un fichier XML qui décrit une base de données relationnelle (juste la structure). Ce fichier a été produit par VS.NET. Comment faire avec l'implémentation DOM de PHP5? Les docs sont assez incomplètes là dessus.
Je ne sais pas exactement ce que tu veux faire mais dans ton cas tu peux faire un $doc->getElementById("ds") (ton exemple doit marcher aussi), et parcourir ensuite l'arbre avec les fonctions du DOM documentées sur le site du w3c [1].
Par exemple: $elements = $doc->getElementsByTagName("complexType");
<?php foreach ($elements as $element) { $sequence = $element->firstChild;
Attention ici je suppose que l'arbre est bien structuré ;-)
Pour entrer dans un element: $node = $parentnode->firstChild, pour parcourir les suivants du même niveau: while ( $node $node->nextSibling ) {}
Attention je précise que 1/ Je suis (beaucoup) plus habitué à utiliser le DOM en Javascript (d'ailleurs la doc de mon lien est celle de l'ECMAScript) 2/ Je n'ai pas testé mes exemples :p
Remplacez nospam par mon prénom pour me contacter par email
TTT <nospam@raslebol.fr> wrote:
J'essaie de parcourrir un fichier XML qui décrit une base de données
relationnelle (juste la structure). Ce fichier a été produit par VS.NET.
Comment faire avec l'implémentation DOM de PHP5? Les docs sont assez
incomplètes là dessus.
Je ne sais pas exactement ce que tu veux faire mais dans ton cas tu peux
faire un $doc->getElementById("ds") (ton exemple doit marcher aussi),
et parcourir ensuite l'arbre avec les fonctions du DOM documentées sur
le site du w3c [1].
Par exemple:
$elements = $doc->getElementsByTagName("complexType");
<?php
foreach ($elements as $element) {
$sequence = $element->firstChild;
Attention ici je suppose que l'arbre est bien structuré ;-)
Pour entrer dans un element: $node = $parentnode->firstChild, pour
parcourir les suivants du même niveau: while ( $node $node->nextSibling ) {}
Attention je précise que
1/ Je suis (beaucoup) plus habitué à utiliser le DOM en Javascript
(d'ailleurs la doc de mon lien est celle de l'ECMAScript)
2/ Je n'ai pas testé mes exemples :p
J'essaie de parcourrir un fichier XML qui décrit une base de données relationnelle (juste la structure). Ce fichier a été produit par VS.NET. Comment faire avec l'implémentation DOM de PHP5? Les docs sont assez incomplètes là dessus.
Je ne sais pas exactement ce que tu veux faire mais dans ton cas tu peux faire un $doc->getElementById("ds") (ton exemple doit marcher aussi), et parcourir ensuite l'arbre avec les fonctions du DOM documentées sur le site du w3c [1].
Par exemple: $elements = $doc->getElementsByTagName("complexType");
<?php foreach ($elements as $element) { $sequence = $element->firstChild;
Attention ici je suppose que l'arbre est bien structuré ;-)
Pour entrer dans un element: $node = $parentnode->firstChild, pour parcourir les suivants du même niveau: while ( $node $node->nextSibling ) {}
Attention je précise que 1/ Je suis (beaucoup) plus habitué à utiliser le DOM en Javascript (d'ailleurs la doc de mon lien est celle de l'ECMAScript) 2/ Je n'ai pas testé mes exemples :p