Python 查找元素的行号';lxml中的s结束标记

Python 查找元素的行号';lxml中的s结束标记,python,lxml,Python,Lxml,在使用lxml解析XML文档时,我希望找到特定标记的起始行号和结束行号。通过使用lxml.etree.Element上的sourceline属性,我能够找到起始标记的位置,但是我很难找到结束标记的行号 我尝试的一个小例子: 将lxml.etree作为ET导入 xml_sample=b'' 福 酒吧 ''' 对于ET.fromstring(xml_sample).getroottree().findall('//value')中的el: print('Found value“{el.text}”从

在使用lxml解析XML文档时,我希望找到特定标记的起始行号和结束行号。通过使用
lxml.etree.Element
上的
sourceline
属性,我能够找到起始标记的位置,但是我很难找到结束标记的行号

我尝试的一个小例子:

将lxml.etree作为ET导入
xml_sample=b''
福
酒吧
'''
对于ET.fromstring(xml_sample).getroottree().findall('//value')中的el:
print('Found value“{el.text}”从第{el.sourceline}行开始)
“并在第行结束?”。格式(el=el))

在上述示例中,是否可以获得
元素的结束标记行号

使用
xml.etree.ElementTree.tostring()
技巧:

...
root = ET.fromstring(xml_sample)
for el in root.findall('.//value'):
    endline_num = el.sourceline + (len(ET.tostring(el).strip().split()) - 1)
    print('Found value "{el.text}" starting on line {el.sourceline} '
          'and ending on line {end_num}.'.format(el=el, end_num=endline_num))
输出:

Found value "foo" starting on line 4 and ending on line 4.
Found value "
            bar
        " starting on line 7 and ending on line 9.