2016-04-25 8 views
1

私は、ID =テキスト1とのTextViewが含まれている唯一の相対的なレイアウトを取得するためのTextViewをしたいと思います例の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> 

のXPathを持つ複数のものが含まれている要素を見つけようとしていますID =テキスト2と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'] 

しかし、何も機能しません。

最初のものは1番目のOR 2番目のOR 3番目のものを含むので、同時に3つではないもののようです。

2番目のものは何も選択していません。

は私が

//ListView/RelativeLayout/TextView[@resource-id='text1'] and TextView[@resource-id='text2'] and ImageView[@resource-id='img1'] 

ような何かをしなければならないと仮定しかし、私はそれを正しく記述するのか分からない:/

任意のヘルプ?

答えて

2

あなたが行うことができます "私は、ID =テキスト1、ID =テキスト2とのTextViewとidとImageViewの= IMG1とのTextViewが含まれている唯一の相対的なレイアウトを取得したいと思います" (読みやすいように改行)この方法:

//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になるはずです。また、述語式([...])が左側のコンテキストノードに適用されていることに注意してください。フォームが/RelativeLayout[....]のため、上記の2つのXPathの外部述語はRelativeLayoutに適用されます。