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:
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&apos;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>
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
 
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()
Je ne sais pas si c'est très claire... :/ N'hésitez pas à me demander de préciser certains points.

Bonne journée et merci d'avance.