我正在使用 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 对所有元素都有一个属性 sourceline,这正是您所追求的。
所以上面的错误消息中的 elem.sourceline 应该可以工作。
