Comment parser un fichier XML avec un tag root avec prefix?
Tout est dit dans le titre, j'ai une source XML, exemple:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
<?xml version="1.0"?>
<tns:createErs>
<common:ERS
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:common="urn:crews:common:v1"
xmlns:nor-xeu="urn:crews:nor:xeu:v1">
<common:FMC FR="FRA" RDRT="2011-07-21T00:14:55">
<common:CRN>OOZ20110721010202000</common:CRN>
</common:FMC>
<common:VES AD="NOR" RC="FPTA" DATI="2011-07-21T00:14:55" MA="KACZOR BERNARD" IR="FRA000900470">
<nor-xeu:LAN DLHL="2011-07-19T21:30:00" PO="DKHAN">
<common:CLC>
<common:LSP SN="POK" RA="IVa" NE="5007" PR="GUT" TY="BOX" NU="185" AW="27"/>
<common:LSP SN="POL" RA="IVa" NE="81" PR="GUT" TY="BOX" NU="3" AW="27"/>
</common:CLC>
</nor-xeu:LAN>
</common:VES>
</common:ERS>
</tns:createErs> |
Mon code, par exemple avec la lib ElementTree:
Code:
1 2 3 4
| import xml.etree.ElementTree as ET
tree = ET.parse(monFichierXML)
for elem in tree.getiterator():
print elem.tag, elem.attrib |
Donne ceci comme erreur:
ExpatError: unbound prefix: line 2, column 0
Mais, si pour mon test, je mets en root:
<data>
........
</data>
à la place de <tns:createErs>
ça fonctionne!
Une idée avec ElementTree (ou peut-être avec une autre lib)?
Merci,
(En fait le XML n'est pas valide mais je ne peux pas le modifier, ça vient de mon client, existe-il un moyen de parser sans tenir compte d'une balise?)