|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||||
|
Candidat au titre de Membre du Club
![]() Inscription : septembre 2012 Messages : 51 ![]() |
Salut,
Je cherche à extraire des données d'un gros, très gros fichier XML. Voici le type d'arborescence: Code xml :
Dans cet exemple il n'y a qu'un seul "measObjInstId", en réalité il y en a 254 je crois. Le but de mon script Perl est de sortir toutes les ivalues pour chaque measObjInstId avec le nom correspondant aux ivalues. Exemple: Code :
Pouvez vous m'aider? Merci |
||||
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Inscription : avril 2004 Messages : 13 487 ![]() |
Bonjour,
Qu'avez-vous essayé ?
__________________
|
|
|
00
|
|
|
#3 | ||||
|
Candidat au titre de Membre du Club
![]() Inscription : septembre 2012 Messages : 51 ![]() |
Le code est sur un autre PC, là je ne l'ai pas mais j'arrive à peu près à extraire ce que je veux mais "ligne par ligne", en gros j'ai:
Code :
Code :
|
||||
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Inscription : avril 2004 Messages : 13 487 ![]() |
Pour analyser un fichier XML, je vous recommande d'utiliser un parser comme je l'explique dans cette documentation : http://djibril.developpez.com/tutoriels/perl/perl-xml/.
__________________
|
|
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Inscription : septembre 2012 Messages : 51 ![]() |
Cette documentation je l'ai déjà lue, elle m'a été très utile mais je ne trouve pas de solution à mon problème.
Je vais peut être me répéter mais par exemple j'ai 250 objets, 250 séries de 7 values, et une seule série de 7 types. Ces 7 types sont des indicateurs pour chaque série de 7 values. Je ne sais pas comment faire apparaître le nom de l'indicateur devant la value à chaque fois que ça se présente... Votre documentation m'a aidé pour extraire des champs compris entre des balises mais pour faire ce que je veux ici, je ne comprends pas
|
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Inscription : avril 2004 Messages : 13 487 ![]() |
Je vous recommande de nous montrer votre programme. On ne va pas s'amuser à en faire un de toute pièce de novo.
__________________
|
|
|
00
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() Inscription : septembre 2012 Messages : 51 ![]() |
Pas de souci je le montrerai quand j'aurai l'autre PC.
![]() Et pour info je ne voulais pas un programme ou un code entier, où avez vous vu que je demandais ça? "Une idée?" ne veut pas dire "donnez moi le code." |
|
|
00
|
|
|
#8 | |
![]() ![]() ![]() Inscription : avril 2004 Messages : 13 487 ![]() |
Ok
Citation:
__________________
|
|
|
|
00
|
|
|
#9 |
|
Expert Confirmé
![]() ![]() Inscription : avril 2009 Messages : 2 633 ![]() |
Un conseil : lors de l'analyse du fichier, range dans un tableau spécial (disons @meastype) les types), et utilise le ensuite lors de l'analyse des iValue.
Quel module parser de XML as-tu utilisé ?
__________________
Plus j'apprends, et plus je mesure mon ignorance (philou67430) Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book) Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé Using strict and warnings is good for you. |
|
|
00
|
|
|
#10 |
|
Candidat au titre de Membre du Club
![]() Inscription : septembre 2012 Messages : 51 ![]() |
J'utilise XML::Twig (recommandé dans la doc de Djibril et utile poru les gros fichier XML.
Je réorganise mon code et je vous poste ça.
|
|
|
00
|
|
|
#11 |
![]() ![]() ![]() Inscription : avril 2004 Messages : 13 487 ![]() |
Parfait
__________________
|
|
|
00
|
|
|
#12 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : septembre 2012 Messages : 51 ![]() |
Voici donc mon code (basique car je débute):
Code :
|
||
|
|
00
|
|
|
#13 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : septembre 2012 Messages : 51 ![]() |
J'ai fait quelques modifs (pour suivre le conseil de Philou):
Code :
|
||
|
|
00
|
|
|
#14 |
![]() ![]() ![]() Inscription : avril 2004 Messages : 13 487 ![]() |
Bonjour,
Pouvez vous nous mettre un exemple de fichier XML valide ? Sinon, à première vue, je vois que vous analysez le fichier à trois reprises et cela n'a à mon sens aucune utilité. Cela alourdit l'analyse en triplant la lecture du fichier XML. Donnez-nous un fichier XML valide pour que nous puissions faire des tests car l'exemple du dessus ne contient pas toutes les balises fermantes. Et si possible, avec un exemple concret de résultats souhaités. Merci !
__________________
|
|
|
00
|
|
|
#15 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : septembre 2012 Messages : 51 ![]() |
Bonjour,
Merci pour votre réponse, effectivement c'est pas très optimisé. J'ai pris qu'une partie du fichier (il fait 44Mo): Code xml :
Pour être clair, pour chaque "objet", il y a autant de "value" que de "type". Nombre total de value = nombre de type * nombre d'objet |
||
|
|
00
|
|
|
#16 |
![]() ![]() ![]() Inscription : avril 2004 Messages : 13 487 ![]() |
Et ce fichier devrait donner quoi comme résultat ?
__________________
|
|
|
00
|
|
|
#17 | |
|
Candidat au titre de Membre du Club
![]() Inscription : septembre 2012 Messages : 51 ![]() |
Je devrais avoir ça:
Citation:
Les deux iValue"1" n'ont pas la même valeur, c'est juste que je change d'objet alors je repars à 1. De même pour les value suivantes... |
|
|
|
00
|
|
|
#18 | ||
![]() ![]() ![]() Inscription : avril 2004 Messages : 13 487 ![]() |
Oui mais il nous faut le résultat concret car
Code :
__________________
|
||
|
|
00
|
|
|
#19 | |
|
Candidat au titre de Membre du Club
![]() Inscription : septembre 2012 Messages : 51 ![]() |
Alors en prenant les valeurs:
Citation:
J'espère être clair, difficile à expliquer avec de l'hexa. |
|
|
|
00
|
|
|
#20 | |
|
Candidat au titre de Membre du Club
![]() Inscription : septembre 2012 Messages : 51 ![]() |
Avec la conversion:
Citation:
|
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com