Skip to main content
 首页 » 编程设计

python之使用 cElementTree : dealing with errors and line number in the file 在 python 中解析 XML 文件

2024年08月12日27开发

我正在使用 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 应该可以工作。