Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用lxml为特定行生成XPath_Python_Xpath_Lxml - Fatal编程技术网

Python 使用lxml为特定行生成XPath

Python 使用lxml为特定行生成XPath,python,xpath,lxml,Python,Xpath,Lxml,是否可以使用行号和python lxml库生成XPath 背景:我们在文档中有引用(不是xpath,而是部分引用),我希望找到对特定元素的所有引用(在特定行中) 在此处输入代码 要素1 颜色 /颜色/红色 颜色 红色 0xFF0000 蓝色 0x0000FF 在XPath之外,我将创建一个类似于value ref的表达式(这可以由regex完成)您可能会做一些事情,解析文档,创建文档中所有元素及其底层行号的映射(使用lxml元素对象的sourceline属性),然后从那里开始工作。但是,如果没

是否可以使用行号和python lxml库生成XPath

背景:我们在文档中有引用(不是xpath,而是部分引用),我希望找到对特定元素的所有引用(在特定行中)

在此处输入代码
要素1
颜色
/颜色/红色
颜色
红色
0xFF0000
蓝色
0x0000FF

在XPath之外,我将创建一个类似于value ref的表达式(这可以由regex完成)

您可能会做一些事情,解析文档,创建文档中所有元素及其底层行号的映射(使用lxml
元素
对象的
sourceline
属性),然后从那里开始工作。但是,如果没有更多的解释,就很难更具体地说明你试图做的事情的性质

编辑:

我仍然不太理解这个问题,但如果有用的话,下面是一些Python代码,它使用lxml并显示示例文档中每个元素的位置路径(xpath)和行号:

import lxml.etree

doc = lxml.etree.parse('test.xml')
tree = lxml.etree.ElementTree(doc.getroot())
for e in tree.xpath('.//*'):
    print(tree.getpath(e), '-', e.sourceline)
我现在用

etree.iter()
迭代所有元素,然后比较

element.sourceline
把它和我要找的那条线比较一下。现在我有了我正在寻找的元素,可以继续生成上面描述的路径


谢谢

请提供一个可复制的例子。我尽量使这个例子尽可能简单。我尝试的是浏览AUTOSAR xml文件。它们可以非常大,超过150000行,并且包含此类链接。我使用vim和lxml查找引用的元素,它的工作非常整洁。但有时我希望找到引用当前元素的所有元素(由当前行/linennumber标识)。希望这有助于理解我的意思。我不熟悉vim+lxml组合(我自己对两者都很熟悉),所以我很难想象这里的交互。对不起,我帮不上什么忙。互动不是问题:)这是我已经解决的部分。但我的问题是将一行转换为xpath。
element.sourceline