Python中是否有任何XML解析库可以跟踪每个元素的行号?我正在编写一个脚本来验证XML设置,如果我的脚本检测到无效行,那么打印行号会很有用。
答案 0 :(得分:2)
我认为您真正需要做的是根据预期的XML架构验证XML文件。 lxml
can do that for you。验证日志将包含在XML文件中找到问题所需的所有信息。
答案 1 :(得分:2)
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)