我正在尝试使用xpath找到包含多个元素的元素,例如
<ListView>
<RelativeLayout>
<TextView id=text1></TextView>
<TextView id=text2></TextView>
<ImageView id=img1></ImageView>
</RelativeLayout>
<RelativeLayout>
<TextView id=text3></TextView>
<TextView id=text4></TextView>
<ImageView id=img2></ImageView>
</RelativeLayout>
</ListView>
我想只检索包含id = text1的textview的相对布局,id = text2的textview和id = img1的imageview
我试过这个
//ListView/RelativeLayout/TextView[@resource-id='text1'] |
//ListView/RelativeLayout/TextView[@resource-id='text2'] |
//ListView/RelativeLayout/ImageView[@resource-id='img1']
这个
//ListView/RelativeLayout/TextView[@resource-id='text1'] and
//ListView/RelativeLayout/TextView[@resource-id='text2'] and
//ListView/RelativeLayout/ImageView[@resource-id='img1']
但没有效果。
第一个似乎是一个选择所有包含第一个或第二个或第三个,所以不是同时包含3个。
第二个没有选择任何东西。
我想我应该做一些像
这样的事情//ListView/RelativeLayout/TextView[@resource-id='text1'] and TextView[@resource-id='text2'] and ImageView[@resource-id='img1']
但我不知道如何正确地写它:/
任何帮助?
答案 0 :(得分:2)
&#34;我想只检索包含带有id = text1的textview的相对布局,带有id = text2的textview和带有id = img1&#34的imageview;
你可以这样做(为了可读性而包装):
//ListView/RelativeLayout[
TextView/@resource-id='text1' and
TextView/@resource-id='text2' and
ImageView/@resource-id='img1'
]
或者更接近上一次尝试的XPath:
//ListView/RelativeLayout[
TextView[@resource-id='text1'] and
TextView[@resource-id='text2'] and
ImageView[@resource-id='img1']
]
请注意,主路径中的最后一个元素是XPath返回的元素,在这种情况下,它应该是/RelativeLayout
,如请求的那样。还要注意谓词表达式([...]
)应用于左侧的上下文节点,因此上面两个XPath中的外部谓词应用于RelativeLayout
,因为表单为/RelativeLayout[....]
。