2013-03-04 92 views
2

我有這樣的HTML代碼前面BR:Xpath的選擇文本()基於前一個兄弟文字

<td width="220" align="left"> 
    <b>Valor da Venda:</b> 
    R$ 650.000,00<br> 
    <b>Valor do IPTU:</b> 
    R$ 0,00<br> 
    <b>Valor do Condomínio:</b> 
    R$ 0,00 
</td> 

我試圖從前面的「BR」標記選擇文本(),其中的文本()在前面的「b」標籤等於「Valor da Venda:」。

我試着用:

/td//text()[preceding::br and contains(../b/text(),'Valor da Venda:')] 

但這回

[' R$ 650.000,00', ' R$ 0,00', ' R$ 0,00 '] 

,而我想在幫助提前返回只有第一個R $ 650.000,00

謝謝

回答

2

雖然不完全符合要求,這可能是您的解決方案嗎?

/td/b[.="Valor da Venda:"]/following-sibling::text()[1] 

或者,如果要檢查的br需求:

/td/b[.="Valor da Venda:"]/following-sibling::text()[1][following-sibling::br]' 
+0

出於某種原因,/ BR沒有解釋爲標記B的兄弟。不知道爲什麼,你的任一解決方案(這似乎是正確的)正在爲lxml xpath解釋器工作=( – bslima 2013-03-05 01:06:46

+0

我想也許這是因爲br沒有關閉 – bslima 2013-03-05 01:13:53

+0

取決於你在使用什麼我猜,這在PHP DOM中起作用if我將它加載爲HTML,如果我將它加載爲XML,當然如果失敗,因爲這不是*** XML,你使用了什麼? – Wrikken 2013-03-05 12:20:24

相關問題