2013-03-04 4 views
2

У меня есть этот HTML код: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> 

Я пытаюсь выбрать текст() из предшествующих тегов «БЗ», где текст() в предыдущий тег «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

По какой-то причине/уш не интерпретируется как родственный тега б. Не знаю, почему одно из ваших решений (что мне кажется правильным) работает для lxml xpath interpreter = ( – bslima

+0

Я думаю, возможно, это потому, что br не закрыт. – bslima

+0

Опирается на то, что вы используете Я думаю, это работает в PHP DOM, если Я загружаю его как HTML. Если я загружу его как XML, если это не так, потому что это *** NOT *** XML. Что вы используете? – Wrikken

Смежные вопросы