IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Comment parser un fichier XML avec un tag root avec prefix?


Sujet :

Python

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 46
    Points : 47
    Points
    47
    Par défaut Comment parser un fichier XML avec un tag root avec prefix?
    Tout est dit dans le titre, j'ai une source XML, exemple:

    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
     
    <?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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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?)

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 459
    Points : 37 054
    Points
    37 054
    Par défaut
    Salut,

    Votre fichier xml n'est pas valide car le namespace tns n'est pas définit.

    Si la question est:
    (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?)
    Un parseur XML s'attend a voir du XML... S'il n'est pas valide, il dira: "prout".
    A vous de nettoyer le fichier "avant" (ajouter a la main la définition de "tns" fonctionne aussi).

    - W

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 46
    Points : 47
    Points
    47
    Par défaut
    Bon, je vais virer la balise tns, pas le choix...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/04/2011, 11h39
  2. comment parser un fichier xml efficacement ?
    Par isoman dans le forum C#
    Réponses: 2
    Dernier message: 08/12/2008, 11h00
  3. Réponses: 1
    Dernier message: 19/11/2008, 14h27
  4. [DOM4J] Comment parser un fichier xml avec dom4j
    Par taouja dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 12/04/2007, 08h47
  5. [XML] Comment parser ce fichier XML avec java !
    Par jlassira dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 13/03/2006, 13h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo