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
Xml 元素中按文本筛选的Xpath结果_Xml_Xpath_Nodes - Fatal编程技术网

Xml 元素中按文本筛选的Xpath结果

Xml 元素中按文本筛选的Xpath结果,xml,xpath,nodes,Xml,Xpath,Nodes,我试图基于元素中的文本返回xpath结果 这是我现在的表达: //S:Body/ns:2hentArsrapporterResponse/return/child::*[text()='2016'] 但是,它只返回一个元素:element='2016 如果元素包含文本“2016”,则表达式应返回返回节点中的所有元素。有人能帮我说出正确的表达方式吗? 这里可能更容易返回所有匹配的节点。既然您想要所有的子标记,那么在外部有一个额外的包装器标记大概不会是一个问题,而且它还可以为您提供一种更好的方式来保

我试图基于元素中的文本返回xpath结果

这是我现在的表达: //S:Body/ns:2hentArsrapporterResponse/return/child::*[text()='2016']

但是,它只返回一个元素:element='2016

如果元素包含文本“2016”,则表达式应返回返回节点中的所有元素。有人能帮我说出正确的表达方式吗?

这里可能更容易返回所有匹配的
节点。既然您想要所有的子标记,那么在外部有一个额外的包装器标记大概不会是一个问题,而且它还可以为您提供一种更好的方式来保持输出的组织。为此,我们可以直接过滤
节点:

//S:Body/ns:2hentArsrapporterResponse/return[antallVersjoner[text()='2016'] or ar[text()='2016'] or ...]

这个解决方案显然依赖于列出所有可能匹配的子节点。如果您有许多子节点,此方法可能不是最佳方法。

谢谢!只是语法有误,但是://S:Body/ns:2hentArsrapporterResponse/return[ar[text()='2016]]返回了所有元素,如果包含的文本是'2016':),最好不要在这里使用
text()
。使用
ar[.='2016']
代替
ar[text()='2016']
,使用
*[ar/text()='2016']
代替
*[ar='2016']
。如果存在注释或混合内容,则使用
text()
将失败。