2

我正在使用该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 元素位置的方法?

谢谢

4

1 回答 1

4

您应该使用的等效库是lxml。lxml 是非常快速的 c 库 libxml2 和 libxslt 的包装器,通常被认为优于内置库。

幸运的是,它尝试保留元素树 api 并在 lxml.etree 中扩展它。

lxml.etree 具有所有元素的属性源代码,这正是您所追求的。

所以elem.sourceline上面的错误消息应该可以工作。

于 2009-08-09T01:33:30.733 回答