跟踪XML文档中行号的Python XML解析器

跟踪XML文档中行号的Python XML解析器,python,xml,Python,Xml,Python中是否有跟踪每个元素行号的XML解析库?我正在编写一个脚本来验证XML设置,如果我的脚本检测到无效行,那么打印行号将非常有用。我认为您真正需要做的是根据预期的XML模式验证XML文件lxml。验证日志将包含在XML文件中查找问题所需的所有信息。可用于解析XML并保留行号。下面是一个简单的例子: from lxml import etree xml = ''' <foo> <bar baz="1">hello</bar>

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

我认为您真正需要做的是根据预期的XML模式验证XML文件<代码>lxml。验证日志将包含在XML文件中查找问题所需的所有信息。

可用于解析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)
从lxml导入etree
xml=“”
你好
世界
'''
root=etree.fromstring(xml)
对于根.findall中的bar(“bar”):
baz=bar.attrib.get('baz',无)
如果int(baz)>1:
引发异常(“第%s行“%bar.sourceline”上的baz不得大于1)

我不想根据预期的模式验证它。我正在使用自己的逻辑验证XML中的属性是否具有预期的数字。我尝试做的一个简单示例:检查所有名为“foo”的元素,并确保foo中属性“bar”的值不超过100。如果bar>100,我想知道它发生的位置。