perl et fichier XML - Perl - Programmation
Marsh Posté le 19-02-2017 à 14:52:32
Parce que XML::Simple, quand il trouve parse un element, s'il a plusieurs fils, il fabrique un array (de hashes) mais s'il y a qu'un fils, il mets directement le hash.
Moi, je n'utilise pas XML::Simple, j'utilise XML::LibXML, qui est certes un peu plus compliqué, mais bien plus utilisable.
Un exemple pour t'inspirer, a adapter a tes besoins:
Code :
|
A+,
Marsh Posté le 19-02-2017 à 15:58:31
Noter aussi que ce genre de manip sur du xml pourrait se faire avec une feuille de style xslt:
Code :
|
A+,
Marsh Posté le 19-02-2017 à 19:28:17
Bonsoir gilou,
alors comment par exemple je peux extraire la définition ayant un sens particulier , j'ai fait ça :
Code :
|
par exemple dans cet extrait je veux savoir la <def> ayant un <sens> dont <ids> = 1
voici l'extrait:
<dict>
<word value="استمارة">
<sense>
<ids>1</ids>
<def>استمارة ورقة تتضمّن بيانات معيّنة خاصَّة بمن يقوم بملئها وتقدَّم عند الالتحاق بمدرسة أو وظيفة أو أي أغراض أخرى ملأ استمارة الشهادة الثانويَّة استمارة قبول استمارة خاصّة تقدَّم للالتحاق بمعهد </def>
</sense>
<sense>
<ids>2</ids>
<def>غادر القطار المحطة</def>
</sense>
</word>
</dict>
Marsh Posté le 19-02-2017 à 21:41:11
J'ai pas testé, mais ca devrait ressembler a ceci:
foreach my $sense ($entry->findnodes('sense')) {
foreach my $id ($sense->findnodes('id')) {
my $num = $id->textContent;
if ($num eq "1" ) {
my @def = $id->findnodes('following-sibling::def')
print $FhResultat $def[1]->textContent, "\n";
}
}
}
A+,
Marsh Posté le 19-02-2017 à 21:58:53
[quotemsg=2296624,6,19304]J'ai pas testé, mais ca devrait ressembler a ceci:
foreach my $sense ($entry->findnodes('sense')) {
foreach my $id ($sense->findnodes('id')) {
my $num = $id->textContent;
if ($num eq "1" ) {
my @def = $id->findnodes('following-sibling::def')
print $FhResultat $def[1]->textContent, "\n";
}
}
}
ça me donne cet erreur :Can't call method "textContent" on an undefined value
Marsh Posté le 20-02-2017 à 01:07:20
$sense->findnodes('ids')
A+,
Marsh Posté le 20-02-2017 à 11:15:43
gilou a écrit : $sense->findnodes('ids') |
Merci gilou pour tous vos remarques, pour vos réponses et votre aide, sincèrement j'ai beaucoup appris dans la programmation perl grâce à vous, maintenant je suis même capable de programmer qqe programmes +- difficiles, bien sure je suis pas assez compétente en perl mais je souhaite la devenir un jour et c'est toujours cause de vos remarques et vos corrections... Merci beaucoup "le Roi" du perl
Marsh Posté le 19-02-2017 à 10:37:45
Bonjour à tous,
j'ai un fichier xml à parti du quel je vais extraire quelques champs:
j'ai fait le code suivant:
voici un extrait de mon fichier xml :
<dict>
<word value="استمارة">
<sense>
<ids>1</ids>
<def>استمارة ورقة تتضمّن بيانات معيّنة خاصَّة بمن يقوم بملئها وتقدَّم عند الالتحاق بمدرسة أو وظيفة أو أي أغراض أخرى ملأ استمارة الشهادة الثانويَّة استمارة قبول استمارة خاصّة تقدَّم للالتحاق بمعهد </def>
</sense>
<sense>
<ids>2</ids>
<def>استمارة ورقة تتضمّن بيانات معيّنة خاصَّة بمن يقوم بملئها وتقدَّم عند الالتحاق بمدرسة أو وظيفة أو أي أغراض أخرى ملأ استمارة الشهادة الثانويَّة استمارة قبول استمارة خاصّة تقدَّم للالتحاق بمعهد </def>
</sense>
</word>
<word value="استوديو">
<sense>
<ids>1</ids>
<def> أُسْتُوديو إسْتُوديو ستوديو مكتب الرسَّام والنحّات أو المصوّر الفوتوغرافيّ أخذت صوري من الاستوديو </def>
</sense>
<sense>
<ids>2</ids>
<def> مكتب لدراسة فنّ من الفنون كالرقص والغناء والتمثيل تدرّب على الغناء في الاستوديو </def>
</sense>
</word>
</dict>
J'ai rencontré le problème suivant:
Merci d'avance..
Message édité par mouda le 19-02-2017 à 11:04:19