2014-01-30 60 views
19

我想使用XPath從a標籤中獲取href屬性,但它在同一個文件中有兩個出現。我怎麼相處? 我需要檢查,如果有一個href屬性與價值$街/對象,我有這個代碼,它不工作:XPath查詢:從標籤獲取屬性href

$product_photo  = $xpath->query("//a[contains(@href,'{$object_street}fotos/')][1]"); 
     $product_360  = $xpath->query("//a[contains(@href,'{$object_street}360-fotos/')][1]"); 
     $product_blueprint = $xpath->query("//a[contains(@href,'{$object_street}plattegrond/')][1]"); 
     $product_video  = $xpath->query("//a[contains(@href,'{$object_street}video/')][1]"); 

它不返回任何東西。誰能幫助我?

回答

42

對於下面的HTML文檔:

<html> 
    <body> 
    <a href="http://www.example.com">Example</a> 
    <a href="http://www.stackoverflow.com">SO</a> 
    </body> 
</html> 

XPath查詢/html/body//a/@href(或簡稱//a/@href)將返回:

 
    http://www.example.com 
    http://www.stackoverflow.com 

要選擇一個特定的實例使用/html/body//a[N]/@href

 
    $ /html/body//a[2]/@href 
    http://www.stackoverflow.com 

測試attrib中包含的字符串UTE並返回該屬性本身放置在標籤檢查不上屬性:

 
    $ /html/body//a[contains(@href,'example')]/@href 
    http://www.example.com 

混合兩種:

 
    $ /html/body//a[contains(@href,'com')][2]/@href 
    http://www.stackoverflow.com 
+0

**編輯:**我怎麼能檢查特定的href屬性?那麼我應該使用'/ html/body // a [1]/@ href ='{$ object_street}/x''? – user3239713

+0

非常感謝您的努力!不幸的是,我仍然有麻煩,我想這不是查詢是錯誤的。你介意看看我的程序代碼,並把我放在正確的軌道上嗎? 因爲,如果是的話,我會發布代碼。 – user3239713

+0

請確保您的查詢正確評估{$ object_street},可能首先將其放入字符串中,如「string s = // a [contains(@href,'{$ object_street} fotos /')] [1]/@href「並檢查's'看起來沒問題。 – mockinterface