analyse du fichier XML en python avec cElementTree: traiter les erreurs et le numéro de ligne dans le fichier
-
12-09-2019 - |
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
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.