Python lxmlxpath//和//差异
在这种情况下//和//的区别是什么。有点困惑 问题2:Python lxmlxpath//和//差异,python,xml,xpath,lxml,Python,Xml,Xpath,Lxml,在这种情况下//和//的区别是什么。有点困惑 问题2: >>> response_zone.xpath("//zones-information/zones-security[//zones-security-interface-name[text()='reth2.66']]/zones-security-zonename/text()") ['A', 'B', 'C'] >>> >>> response_zon
>>> response_zone.xpath("//zones-information/zones-security[//zones-security-interface-name[text()='reth2.66']]/zones-security-zonename/text()")
['A', 'B', 'C']
>>>
>>> response_zone.xpath("//zones-information/zones-security[.//zones-security-interface-name[text()='reth2.66']]/zones-security-zonename/text()")
['A']
在问题2中,他们有相同的结果
我对此感到困惑。需要帮助。请阅读xPath=)
-s是self::node()的缩写
,当前节点的参考
/
-是/genderant或self::node()/
的缩写,在所有层上的所有节点内搜索
/
-从所有层上的当前节点进行搜索
/
从下面的当前节点1层搜索
所以当您这样做时:
//某物[.//另一个]
-某物
,在任何层中都有另一个
//某物[./另一个]
-某物
,其子对象为另一个
//something[//other]
-something
,但文件中的某个地方另一个也应该是[不仅在something
内部,而且在任何地方]
//something//另一个
-另一个
,在任何层上都有某个
作为父对象
//something/other
-something
直接父对象other
//某些内容//另一个
-错误,由于语法不正确,请仅使用//
)
当您仅使用/
或/
启动定位器时,没有区别,因为起始点是根文档元素,所以它将在整个文件中进行搜索。
引用当前节点。如果查询以/
或/
开头,则它与文档的根相关<代码>/
遍历所有子体。把它们放在一起,你会得到什么?//something[//other]:如果它能在某处找到另一个,xpath会用//something下的所有值进行响应。就像我得到的:response\u zone.xpath(“//zones information/zones security interface name[//text()='reth2.66']]]/zones security zonename/text()”['A',B',C'].我说的对吗?我想知道为什么它会响应所有区域的安全如果我使用//something[//other]是因为您不是从当前节点进行搜索,那么请使用//
而不是=)这正是xpath的工作方式,我不确定他们为什么以这种方式实现它。但使用它,您可以获得一些与当前节点完全不相关的值(例如某些页数),并在当前节点中使用它。我想这是主要原因。是的,我知道我不是从当前节点[//区域安全接口名称[text()='reth2.66'],而是整个路径是:response_zone.xpath(“//区域信息/区域安全[//区域安全接口名称[text()='reth2.66']]/zones security zonename/text()”。如何理解这一点?
>>> response_zone.xpath("//zones-information/zones-security[//zones-security-interface-name[text()='reth2.66']]/zones-security-zonename/text()")
['A', 'B', 'C']
>>>
>>> response_zone.xpath("//zones-information/zones-security[.//zones-security-interface-name[text()='reth2.66']]/zones-security-zonename/text()")
['A']
>>> response_zone.xpath(".//zones-security[.//zones-security-interface-name[text()='reth2.66']]/zones-security-zonename/text()")
['A']
>>> response_zone.xpath("//zones-security[.//zones-security-interface-name[text()='reth2.66']]/zones-security-zonename/text()")
['A']