我现在用的是cElementTree库来解析在Python中的XML文件。 一切正常

但是,我想为用户提供充分的错误消息时,在XML的值是不正确的。

例如,让我们假设我有下面的XML:

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

和想要告诉用户,如果href属性不存在或具有值不是在给定的列表中。

有关的那一刻,我有一些像

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

在我的异常某处捕获。

但是,此外,我想显示的文件中的XML元素的行号。看来,cElementTree不存储有关树的XML元素的行号的任何信息...: - (

问:有没有能够做到这一点的等价XML库? 或一种方式来访问一个XML元素的XML文件中的位置?

由于

有帮助吗?

解决方案

这应该使用的等效库是 LXML 。 LXML是非常快速的C的包装库libxml2和和的libxslt通常被认为优于内置的。

有,luckly,试图保持到元素树API和它在lxml.etree延伸。

lxml.etree对所有元素的属性源极线是你是什么东西了。

因此,在该错误消息应该工作以上elem.sourceline

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top