Vous êtes ici : Accueil / Forums & ML / Forums Python / Forum général Python / ElementTree : diagnostic d'erreur

ElementTree : diagnostic d'erreur

Remonter à Forum général Python
  • ElementTree : diagnostic d'erreur

    Envoyé par emmanuel_dumas le 29 Janvier 2013 à 09:29
    Bonjour

    J'utilise Elementtree pour lire du XML. Voici un cas typique d'utilisation :

    from xml.etree import ElementTree

    s = """

    fr
    de
    un
    deux

    """

    try:
    tree = ElementTree.fromstring(s)

    children = list(tree)
    for c in children:
    print("c=", c)

    except:
    print("Failed to read ", s)
    raise


    J'ai alors en sortie écran :
    c=
    c=
    c=
    c=

    Maintenant, s'il y a une erreur dans le XML, par exemple :
    s = """

    fr
    de
    un
    deux

    """

    J'ai cela comme sortie :
    Failed to read

    fr
    de
    un
    deux

    Traceback (most recent call last):
    File "/home/edumas/vision_src/trunk/vdr/xlng/uttest/utt_xml.py", line 78, in testReadFromString
    tree = ElementTree.fromstring(s)
    File "/home/edumas/vision_src/trunk/vdr/build_debug/vappli/base_UBUNTU/python/lib/python3.3/xml/etree/ElementTree.py", line 1356, in XML
    parser.feed(text)
    File "", line None
    xml.etree.ElementTree.ParseError: mismatched tag: line 5, column 28


    Comment récupérer alors dans une variable la ligne et la colonne de l'erreur ?

    Cordialement
    Emmanuel
    • Re: ElementTree : diagnostic d'erreur

      Envoyé par jacko le 29 Janvier 2013 à 14:59
      Bonjour,

      Les instances de ParseError ont un attribut
      .position
      c'est un tuple (num ligne, num colonne)

      Voir le bas de la doc du module xml.etree.ElementTree (§ 20.5.3.7 Exceptions)


      try:
      tree=ElementTree.fromstring(s)
      except Exception as e:
      print(e.position)

      ->
      (1, 35)

Rendu par Ploneboard