【发布时间】:2016-07-13 01:35:47
【问题描述】:
Python 中是否有任何 XML 解析库可以跟踪每个元素的行号?我正在编写一个脚本来验证 XML 设置,如果我的脚本检测到无效行,打印行号会很有用。
【问题讨论】:
Python 中是否有任何 XML 解析库可以跟踪每个元素的行号?我正在编写一个脚本来验证 XML 设置,如果我的脚本检测到无效行,打印行号会很有用。
【问题讨论】:
lxml 可用于解析 xml 并保留行号。这是一个简单的例子:
from lxml import etree
xml = '''
<foo>
<bar baz="1">hello</bar>
<bar baz='2'>world</bar>
</foo>
'''
root = etree.fromstring(xml)
for bar in root.findall("bar"):
baz = bar.attrib.get('baz', None)
if int(baz) > 1:
raise Exception("baz must not be greater than 1 on line %s" % bar.sourceline)
【讨论】:
我认为您真正需要做的是根据预期的 XML 模式验证 XML 文件。 lxmlcan do that for you。验证日志将包含您在 XML 文件中定位问题所需的所有信息。
【讨论】: