用于跟踪XML文档中行号的Python XML Parser

时间:2016-07-13 01:35:47

标签: python xml

Python中是否有任何XML解析库可以跟踪每个元素的行号?我正在编写一个脚本来验证XML设置,如果我的脚本检测到无效行,那么打印行号会很有用。

2 个答案:

答案 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)