2013-02-03 67 views
0

我想檢索使用php xpath評估或查詢某些值。但無法成功完成。 這裏是頁面的HTML結構:條件值檢索在php xpath

<div id="productinfo"> 
<h2> 
<span id="productname">Computer</span> 
</h2> 
<span id="servieidLabel" style=""> Service ID: </span> 
<span id="snLabel" style="display: none"> Serial Number: </span> 
<span id="servidno">12345ABCD</span> 

我想要的風格=,只顯示內容「顯示:無」,或者如果樣式屬性是不存在的。所以結果是: - 服務ID:12345ABCD。

我曾嘗試:

$ServLab = $xpath->query("//span[@id='servieidLabel']"); 
foreach ($ServLab as $entry) { 
echo "Service Label:" ,$entry->nodeValue."<br />"; 
} 

輸出=服務ID:

$servid = $xpath->query("//span[@id='servidno']"); 
foreach ($servid as $entry) { 
echo "Service Id No:" ,$entry->nodeValue."<br />"; 
} 

輸出=空白。而輸出應該是12345ABCD。我錯過了什麼?

如果我嘗試:

$prodid = $xpath->evaluate("//div[@id='productinfo']"); 
foreach ($prodid as $entry) { 
echo $entry->nodeValue."<br />"; 
} 

輸出=服務ID:序列號:

請幫助。

回答

0

您首先陳述的問題可以在單個查詢中解決。像這樣的:

$ServLab = $xpath->query("//div/span[string-length(@style) < 1]"); 
foreach ($ServLab as $entry) { 
    echo $entry->nodeValue."<br />"; 
} 

這將提供

Service ID: 
12345ABCD 
+0

注意在查詢中添加 '/ DIV'。您也可以通過將所有細節跨度包裝在一個包裝中來使其更具體。比選擇那個包裝。 – mvbrakel

+0

感謝您的快速響應。我試過這個,它的工作原理。但與我正在使用的頁面不同。剛剛意識到這些值是通過JavaScript插入到頁面中的。所以,我必須找出一種方法來通過js而不是html。 – Amit

+0

在JS中,您可以重複使用給定的xpath!祝你網頁/網站好運! – mvbrakel