Problème pour récupérer toutes les informations d'un XML
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:
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> |
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:
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.