analyse du fichier XML en python avec cElementTree: traiter les erreurs et le numéro de ligne dans le fichier

StackOverflow https://stackoverflow.com/questions/1250192

Question

J'utilise la bibliothèque cElementTree pour analyser les fichiers XML en Python. Tout fonctionne très bien

Mais je voudrais des messages d'erreur complète pour l'utilisateur lorsqu'une valeur dans le fichier XML est incorrect.

Par exemple, supposons que je le code XML suivant:

<A name="xxxx" href="yyyy"/>

et que vous voulez dire à l'utilisateur si l'attribut href n'existe pas ou une valeur qui ne sont pas dans une liste donnée.

Pour l'instant, j'ai quelque chose comme

if elem.get("ref") not in myList:
    raise XMLException( elem, "the 'href' attribute is not valid or does not exist")

où mon exception est pris quelque part.

Mais, en plus, je voudrais afficher le numéro de ligne de l'élément XML dans le fichier. Il semble que le cElementTree ne stocke pas d'informations sur les numéros de ligne des éléments XML de l'arbre ...: - (

Question: Y at-il une bibliothèque XML équivalent qui est capable de le faire? Ou un moyen d'avoir accès à la position d'un élément XML dans le fichier XML?

Merci

Était-ce utile?

La solution

La bibliothèque équivalente que vous devez utiliser est lxml . lxml est un wrapper sur c très rapide bibliothèques libxml2 et libxslt et est généralement considéré comme supérieur à la construction dans les.

, luckly, essaie de garder à l'api arbre de l'élément et l'étendre à lxml.etree.

lxml.etree a un sourceline d'attribut pour tous les éléments qui est exactement ce que vous recherchez.

elem.sourceline Donc, ci-dessus dans le message d'erreur devrait fonctionner.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top