2012-12-15 281 views
0

我要排除此表中的IMG值:需要幫助:XPath查詢

<table class="info"> 
<tbody> 
    <tr><th class="round-top" colspan="2">Status</th></tr> 
    <tr class="even"> 
    <td class="key">Schaltprogramm aktiv</td> 
    <td class="value"><img height="15" src="./pics/ste-symbol_an-97b765.png"></td> 
    </tr> 
</tbody> 
</table> 

我要排除此表中的值:

<table class="info"> 
<tbody> 
    <tr><th class="round-top" colspan="2">Warmwasser</th></tr> 
    <tr class="even"> 
    <td class="key">WW-Isttemp.</td> 
    <td class="value">49,0 °C</td> 
    </tr> 
    <tr class="odd"> 
    <td class="key round-leftbottom">WW-Solltemp.</td> 
    <td class="value round-rightbottom">46,5 °C</td> 
    </tr> 
</tbody></table> 

這裏是我的不好的測試:

$nodelist = $xpath->query("//tr/td[substring(@class,1,5)='value']"); 
$imgs = $xpath->query("//table[@class='info']/tr/td/img"); 

我必須做些什麼來排除變量「nodelist」中的IMG值?

有什麼想法?

+0

XPath是XML文檔的* query *語言。因此,XPath表達式不能更改文檔(通過創建或刪除節點)。你需要做的是將文檔轉換成另一個XML文檔。 XSLT是一種特別爲XML轉換而設計的語言,而這種特定的轉換對於XSLT來說是微不足道的。你會對獲得XSLT解決方案感興趣嗎? –

回答

0

我認爲(但我不能肯定)要$nodelist包含所有td元件,其class屬性開始字符串value但如果它們包含img元素

如果這是你的問題的正確解釋,更改

$nodelist = $xpath->query("//tr/td[substring(@class,1,5)='value']"); 

$nodelist = $xpath->query("//tr/td[substring(@class,1,5)='value'][not(img)]"); 

我不知道你要在你的第二個示例表辦的溫度值它是什麼;您可能想要編輯問題以明確您是否要檢索它們。