我正在使用 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 的包装器,通常被认为优于内置库。
幸运的是,它尝试保留元素树 api 并在 lxml.etree 中扩展它。
lxml.etree 有一个适用于所有元素的属性源代码,这正是您所追求的。
因此上面的错误消息中的 elem.sourceline
应该可以工作。
关于python - 使用 cElementTree : dealing with errors and line number in the file 在 python 中解析 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1250192/