Bonjour tout le monde,
Je viens vers vous car j'ai un problème pour récupérer toutes les informations d'un fichier XML avec DOM.
Le problème est que je n'arrive pas à récupérer le contenu de ce qui est souligné (entre les balises <test:span>): je n'arrive pas à trouver un bon algo pour vérifier et rajouter le contenu avec les balises getElementsByTagName("text:span") tout en gardant l'ordre des mots...
J'ai essayé différentes solutions, qui ne marchent pas vraiment à chaque fois.
Ci dessous mon fichier xml:
Ici le code que j'utilise pour parser le contenu du fichier xml (celui qui marche, qui récupérer juste un None pour la partie du <test:span>:
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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 <table:table table:name="Tableau1" table:style-name="Tableau1"> <table:table-column table:style-name="Tableau1.A"/> <table:table-column table:style-name="Tableau1.B"/> <table:table-column table:style-name="Tableau1.C"/> <table:table-column table:style-name="Tableau1.D"/> <table:table-column table:style-name="Tableau1.E"/> <table:table-column table:style-name="Tableau1.F"/> <table:table-header-rows> <table:table-row table:style-name="Tableau1.1"> <table:table-cell table:style-name="Tableau1.A1" table:number-columns-spanned="2" office:value-type="string"> <text:p text:style-name="P36">Exemple1</text:p></table:table-cell><table:covered-table-cell/> <table:table-cell table:style-name="Tableau1.A1" office:value-type="string"> <text:p text:style-name="P37">Exemple 2</text:p><text:p text:style-name="P37">d'exemple</text:p></table:table-cell> <table:table-cell table:style-name="Tableau1.A1" office:value-type="string"> <text:p text:style-name="Table_20_Heading">Example3</text:p></table:table-cell> <table:table-cell table:style-name="Tableau1.A1" office:value-type="string"> <text:p text:style-name="Table_20_Heading">Example4</text:p></table:table-cell> <table:table-cell table:style-name="Tableau1.F1" office:value-type="string"> <text:p text:style-name="Table_20_Heading">Example5</text:p></table:table-cell></table:table-row></table:table-header-rows> <table:table-row table:style-name="Tableau1.2"> <table:table-cell table:style-name="Tableau1.A2" office:value-type="string"> <text:p text:style-name="P38">blabla</text:p></table:table-cell> <table:table-cell table:style-name="Tableau1.B2" office:value-type="string"> <text:p text:style-name="P39">blablabla</text:p></table:table-cell> <text:p text:style-name="P39"><text:span text:style-name="T48">BLABLA SOULIGNE</text:span> : blablabla</text:p> <table:table-cell table:style-name="Tableau1.B2" office:value-type="string"> <text:list text:style-name="List_20_1"> <text:list-item text:start-value="1"> <text:p text:style-name="P41">text1,</text:p></text:list-item> <text:list-item> <text:p text:style-name="P41">text2</text:p></text:list-item> <text:list-item> <text:p text:style-name="P41">text3</text:p></text:list-item></text:list></table:table-cell> <table:table-cell table:style-name="Tableau1.E2" office:value-type="string"> <text:p text:style-name="P42">N</text:p></table:table-cell> <table:table-cell table:style-name="Tableau1.F2" office:value-type="string"> <text:list text:style-name="List_20_1"> <text:list-item text:start-value="1"> <text:p text:style-name="P41">blabla</text:p></text:list-item> <text:list-item> <text:p text:style-name="P41">blabla2</text:p></text:list-item> <text:list-item> <text:p text:style-name="P41">blabla3/text:p> </text:list-item></text:list></table:table-cell></table:table-row>
Je ne sais pas si c'est très claire... :/ N'hésitez pas à me demander de préciser certains points.
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 def parse_dom(name_file): fd = open(name_file, 'r') content = xml.dom.minidom.parse(name_file) for sheet in sheet_list: sheet_name = sheet.getAttribute('table:style-name') cells = sheet.getElementsByTagName('table:table-cell') print "La ligne contient: %d" % cells.length for cell in cells: value = cell.getElementsByTagName("text:p") print "le nombre de valeur est %d" % value.length for i in range(value.length): node = value.item(i) print node.childNodes[0].nodeValue fd.close()
Bonne journée et merci d'avance.
Partager