2016-12-19 3 views
0

私はこのようなHTMLコードを持っている:私は首尾よくつかん/タグから "href"を解析するXPath?

<a href="/images/big_1.jpg" class="class-a"> 
    <img class="class-img" src="/images/small_1.jpg"/> 
     <span class="class-span"> 
     <img src="/images/img_1.png"> 
     </span> 
</a> 

<a href="/images/big_2.jpg" class="class-a"> 
    <img class="class-img" src="/images/small_2.jpg"/> 
     <span class="class-span"> 
     <img src="/images/img_2.png"> 
     </span> 
</a> 

をすべてのURLの最初の/タグからこれで:それは戻ってくる例えば

//a[@class="class-a"]/@href 

このURLの:

/images/big_1.jpg,/images/small_1.jpg,/images/img_1.png 

しかし、私はこのURLが必要です:

/images/big_1.jpg,/images/big_2.jpg 

ヘルプ、お願いします!

答えて

0

//a[@class="class-a"]/@hrefは、a要素の属性値が "class-a" class属性のhrefの値を返します。あなたの場合、これらは次のとおりです:

/images/big_1.jpg,/images/big_2.jpg 

つまり、あなたの現在のアプローチは正しいです。


あなたがa要素のsrchref属性だけでなく、すべての子要素を取得することを意味します。このような場合は、属性名をチェックするためにname()descendant-or-self@*を使用することができます。

//a[@class = 'class-a']/descendant-or-self::*/@*[name() = 'src' or name() = 'href'] 
+0

いいえ、私は唯一のhref必要があります。 – Reforket

+0

@Reforketでも、あなたの表現はうまくいくはずです。あなたの入力が希望のものとどのように違うかを詳しく教えてください。ありがとう。 – alecxe

+0

多分私のパーサで何かがあります。あなたが書いたコードは動作しないためです。 // a [@ class = "class-a"]/@ href私は必要なものを与えても、正しく動作していないことを理解しています。 – Reforket