Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML > DOM
DOM Forum d'entraide pour l'extension DOM permettant de manipuler des documents XML en PHP 5 (approche DOM). Avant de poster -> tutoriels DOM
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/12/2006, 11h34   #1
Invité de passage
 
Développeur informatique
Inscription : décembre 2006
Messages : 3
Détails du profil
Informations personnelles :
Localisation : France, Indre et Loire (Centre)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : décembre 2006
Messages : 3
Points : 0
Points : 0
Par défaut [DOM] Problème de traitement récursif, nombre de noeuds fils

Bonjour,

j'ai quelques soucis quant à l'utilisation du DOM avec PHP5.
mon projet est le suivant : je reçois une ou plusieurs commandes clients dans un fichier au format XML que je dois traiter afin d'intégrer toutes les infos dans l'ERP de ma société (MFG PRO v7.3k pour ceux qui connaissent). Celui-ci étant assez ancien, les données à traiter seront donc converties en fichier csv. J'ai choisi, pour ce faire, la solution Apache/PHP5.

Mon permier soucis est le suivant : j'arrive bien à traduire l'ensemble du fichier en csv (avec une fonction récursive) seulement une commande peut être différente d'une autre avec par exemple une ou plusieurs descriptions (ou aucune comme dans l'exemple suivant)

Code XML :
1
2
3
4
5
6
7
8
9
10
11
12
<cmd>
  <num_cmde>123456</num_cmde>
  <article>clavier</article>
  <description>
     <desc:desc1>blablabla</desc:desc1>
     <desc:desc2>blablabla</desc:desc2>
  </description>
</cmd>
<cmd>
  <num_cmde>987654</num_cmde>
  <article>souris sans fil</article>
</cmd>

Je n'arrive donc pas à gérer proprement ce genre de cas pour avoir toutes mes lignes de commandes formattées de la même façon.
Et mon code commance à ressembler à une usine à gaz.

Mon deuxieme soucis est que quand je veux connaitre le nombre de fils d'un noeud, il me ramène des choses incohérentes : par exemple un noeud possède 2 fils, $noeud->length va me rammer 5 (2 XML_ELEMENT_NODE et 3 XML_TEXT_NODE) et je ne comprends pas pourquoi.

Merci pour votre aide !!!

Erivoil
erivoil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2006, 12h32   #2
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Citation:
Envoyé par erivoil
Mon deuxieme soucis est que quand je veux connaitre le nombre de fils d'un noeud, il me ramène des choses incohérentes : par exemple un noeud possède 2 fils, $noeud->length va me rammer 5 (2 XML_ELEMENT_NODE et 3 XML_TEXT_NODE) et je ne comprends pas pourquoi.
Ce n'est pas incohérent, il y a bien cinq noeuds fils :
- un noeud textuel (avec des espaces, un retour à la ligne, des tabulations... que sais-je ! c'est bien du texte tout ça en fait)
- un élément
- un noeud textuel
- un élément
- un dernier noeud textuel

En fait il va falloir faire des tests pour ne pas prendre en compte les noeuds textuels, qui viennent du formatage du document. Tu pourrais utiliser getElementsByTagName, mais l'inconvénient c'est que tu récupéreras tous les descendants de même nom, pas seulement les fils. A toi de voir si ça convient à ton appli.
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2006, 12h39   #3
Invité de passage
 
Développeur informatique
Inscription : décembre 2006
Messages : 3
Détails du profil
Informations personnelles :
Localisation : France, Indre et Loire (Centre)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : décembre 2006
Messages : 3
Points : 0
Points : 0
Merci pour ta réponse et aussi d'avoir déplacé mon post, oups...

Pour le nombre de fils, j'ai effectivement fait un test en ne tenant compte que du type XML_ELEMENT_NODE mais c quand même pas évident à gérer.

Merci pour cette première réponse.
Erivoil
erivoil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h47.


 
 
 
 
Partenaires

Hébergement Web