1
Python中是否有任何XML解析库跟踪每个元素的行号?我正在编写一个脚本来验证XML设置,如果我的脚本检测到无效的行,则打印行号会很有用。Python XML解析器,跟踪XML文档中的行号
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文件。 lxml
can do that for you。验证日志将包含您在XML文件中找到问题所需的所有信息。
我没有试图根据预期的模式验证它。我正在使用我自己的逻辑验证XML中的属性是否具有预期的数字。下面是一个简单的例子:检查所有名为“foo”的元素,并确保foo中属性“bar”的值不超过100.如果bar> 100,我想知道该行发生的地方。 – Ben