2013-03-04 88 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

相关问题