Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.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
简化特定XPath表达式_Xpath - Fatal编程技术网

简化特定XPath表达式

简化特定XPath表达式,xpath,Xpath,我想知道是否可以简化以下XPath表达式: //map[requester/@type='2' and requester/code] 一些测试数据: <root> <map> <requester type="2"> <code>a</code> <code>b</code> </requester>

我想知道是否可以简化以下XPath表达式:

//map[requester/@type='2' and requester/code]
一些测试数据:

<root>
    <map>
        <requester type="2">
            <code>a</code>
            <code>b</code>
        </requester>
    </map>

    ...
</root>

我的目标是只获取至少有一个请求者具有type属性和值“2”的映射元素,并且至少有一个code元素。

对于您的用例,这可能是最简单的。但是,它与您描述的操作不匹配

在这里,您可以选择地图元素,其中

  • 存在一个类型属性等于2的请求者元素
  • 有一个requester元素和一个code元素
  • (1)和(2)中的请求者元素不一定相同
  • 例如,将选择以下中的贴图元素:

    <root>
        <map>
            <requester type="2"/>
            <requester>
                <code>a</code>
            </requester>
        </map>
    </root>
    
    如果希望(1)和(2)中的元素相同,应该使用(根据kjhughes的建议稍微简化)


    在这里,我们选择所有具有请求者元素的映射元素,请求者元素又具有值为2的属性类型和代码元素。

    如果看不到运行它所针对的数据,这实际上是不可能回答的。我已经添加了测试数据。极大的改进!非常感谢。很好的解释(+1)。这里有一个可以从长度上去掉几个字符的变体:
    //map[requester[@type='2']/code]
    假设我也需要非空白的“code”,那么像:://map[requester[@type='2']/code[normalize-space()]这样的解决方案会很好吗?@kjhough你是对的,这会好一点。我本该想到这种改进的。我已将其编辑为答案。@efstathioschatzikyrakidis是的,该修改将只提供包含类型属性为2的请求者元素的映射元素,而该属性又至少包含一个不完全由空格组成的代码元素。
    //map[requester[@type='2']/code]