2016-01-26 2 views
0

Существует некоторый HTML-код, как это:выбрать только определенные теги Tr для XPath в Java

<TBODY> 
 
    <TR> 
 
    <TD> 
 
     <DIV>Address</DIV> 
 
    </TD> 
 
    </TR> 
 
    <TR> 
 
    <TD> 
 
     <DIV>1600 Pennsylvania Avenue</DIV> 
 
    </TD> 
 
    </TR> 
 
    <TR> 
 
    <TD> 
 
     <DIV>Oval Office</DIV> 
 
    </TD> 
 
    </TR> 
 
    <TR> 
 
    <TD> 
 
     <DIV>Washington, DC 22066</DIV> 
 
    </TD> 
 
    </TR> 
 
    </TBODY>

Это пример. Дело в том, что первый TR имеет только текст «Адрес», а остальные имеют фактический адрес. Я хотел бы сделать xpath, который просто получит более поздние (т. Е. Не первый). Есть ли способ использовать xpath что-то вроде «tbody/tr [> 1]». Я могу сделать небольшую петлю java, чтобы прокручивать и просто игнорировать первую, что я делаю, но если есть лучший способ, мне было бы интересно узнать это.

Это java и eclipse и chrome (хотя браузер не должен иметь значения).

Благодаря

ответ

1

Вы можете использовать ниже выражение XPath:

/TBODY/TR[position()>1] 

Он пропускает первый элемент TR и рассматривает только позже.

XPATH выражение: -

/TBODY/TR[position()>1]/TD/DIV/text() 

Выход: -

Text='1600 Pennsylvania Avenue' 
Text='Oval Office' 
Text='Washington, DC 22066' 
+0

Это будет в списке размером 3, не так ли? Получить каждый элемент из списка и получить текст? – Tony

+0

Да, O/P показан только для списка с 3 адресами, но выражение XPATH является общим и будет работать для списка с размером> 3, только условие в выражении - пропустить первый элемент. Да, текстовый метод даст вам текстовое значение определенного узла, это то, что вас интересует. –

1

Вы получили что-то вроде: tbody/tr[preceding-sibling::*]/td/div

0

Я хотел бы использовать предикат на TR, который имеет свой 'адрес' текст, а затем получить следующий Sibling TR «с. ..

/TBODY/TR[TD/DIV='Address']/following-sibling::TR/TD/DIV 
Смежные вопросы