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

标签 python error-handling line-numbers celementtree

我正在使用 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/

相关文章:

python - 在 Python 脚本中的 Windows 中的 C++ 命令行编译

python - 从 。导入_方法 ImportError : cannot import name '_methods' in cx-freeze python

php - SQLSTATE [HY000] : General error: 1364 Field 'accepted' doesn't have a default value

java - Java JTextArea行号

ms-word - rMarkdown : compile word docx document with line numbers

python - 需要 Microsoft Visual C++ 14.0,在 Windows Docker 上安装 pip 包

PowerShell 表单,尝试/捕获未正确停止应用程序

python - 简单的套接字调用返回socket.gaierror : [Errno 8]

vim - 在 VIM 中设置相对数字颜色

python - 将文本文件(.txt 文件)与 python 中的列表串联?