Bonjour à tous et merci d'avance à ceux qui pourront m'aider.
Je dois traiter des fichiers xml en récupérant les informations contenus dedans.
J'arrive à récupérer quasiment toutes les informations contenu dans les balises toutefois, d'un XML à un autre, une balise précises, peut contenir une sous balise et c'est là que je bloque.
Voici le XML :
Je n'ai pas pris la peine d'ajouter le reste car il m'est facile d'y récupérer les informations.
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 <BODY> <SECTION> <IT1><B>blablabla...</B></IT1> <PAR>blablabla...<BR/></PAR> <PAR>blablabla...<BR/></PAR> </SECTION> <SECTION> <IT1><B>blablabla</B></IT1> <PAR>blablabla...(<I>lire en page 3).</I><BR/></PAR> </SECTION> <ENCADRE> <ETX><B><I>blablabla</I></B></ETX> <ETX><B><I>blablabla</I></B></ETX> </ENCADRE> </TEXTE> </BODY> <PDF id="20130809_REN_002" nature="page"/> </DOC-PRESSED>
Comme vous pouvez le voir dans l'exemple, il peut parfois apparaître dans la balise <TEXTE>==><PAR> comme parfois dans la balise <SECTION>==><PAR> des sous balises <IT1> ou <I> etc...
Voici la commande que je tape pour récupérer toutes les balises <PAR> contenu dans <TEXTE>
Code Python : 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 from xml.dom import minidom def getText(nodelist): rc = [] for node in nodelist: if node.nodeType == node.TEXT_NODE: rc.append(node.data) return ''.join(rc) try : dom = minidom.parse(ficXML) root = dom.documentElement except : print "erreur" break if (root.getElementsByTagName("TEXTE")): texte = root.getElementsByTagName("TEXTE")[0] par = texte.getElementsByTagName("PAR") i=0 for i, tmp in enumerate(par): if (texte.getElementsByTagName("PAR")[i]): words = getText(texte.getElementsByTagName("PAR")[i].childNodes).strip().encode("utf-8") print words i+=1 else: continue
Ce script m'affiche les textes sans le texte contenu dans <I>.
En Perl, il m'est facile d'afficher tout le contenu de la balise <TEXTE> avec les lignes suivantes :
Il m'affiche tout le texte même ceux dans les sous balises.
Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 print $noeuds->find_by_tag_name("TEXTE")->as_text;
Malheureusement, avec Python, je ne trouve pas le moyen d'afficher le texte mise à part me déplacer dans les sous balises etc...
Est-ce possible de supprimer ces balises pour que son contenu fasse partie de la balise Parents <PAR>?
Est-ce possible de savoir si une balise possède une balise enfant (car il n'y est pas systématiquement).
Je ne suis pas obligé d'utiliser xml.dom.
Merci d'avance pour votre aide.
Cordialement.







Répondre avec citation






Partager