2014-12-18 2 views
2

я следующую структуру:Выражение XPath для получения элемента после другого

<html> 
<head> 
<title>Index of /</title> 
</head> 
<body> 
    <h1>Index of /</h1> 
    <pre> 
     <img src="/icons/blank.gif" alt="Icon "> <a href="?C=N;O=D">Name</a>     <a 
      href="?C=M;O=A">Last modified</a>  <a href="?C=S;O=A">Size</a> <a 
      href="?C=D;O=A">Description</a> 
     <hr> 
     <img src="/icons/folder.gif" alt="[DIR]"> <a href="berta.ear/">berta.ear/</a>   23-Sep-2014 13:17 - 
     <img src="/icons/folder.gif" alt="[DIR]"> <a href="egon.ear/">egon.ear/</a>   24-Oct-2014 16:04 - 
     <img src="/icons/folder.gif" alt="[DIR]"> <a href="anton01.ear/">anton01.ear/</a>    18-Dec-2014 12:03 - 
     <img src="/icons/folder.gif" alt="[DIR]"> <a href="anton02.ear/">anton02.ear/</a>    18-Dec-2014 08:38 - 
     <img src="/icons/folder.gif" alt="[DIR]"> <a href="anton03.ear/">anton03.ear/</a>    18-Dec-2014 11:43 - 
     <img src="/icons/folder.gif" alt="[DIR]"> <a href="anton04.ear/">anton04.ear/</a>    05-Dec-2014 16:02 - 
     <img src="/icons/folder.gif" alt="[DIR]"> <a href="anton05.ear/">anton05.ear/</a>    15-Sep-2014 19:22 - 
     <img src="/icons/folder.gif" alt="[DIR]"> <a href="anton06.ear/">anton06.ear/</a>    17-Dec-2014 10:50 - 
     <img src="/icons/folder.gif" alt="[DIR]"> <a href="anton07.ear/">anton07.ear/</a>    10-Dec-2014 13:02 - 
     <img src="/icons/folder.gif" alt="[DIR]"> <a href="anton08.ear/">anton08.ear/</a>    15-Dec-2014 09:30 - 
     <img src="/icons/folder.gif" alt="[DIR]"> <a href="anton09.ear/">anton09.ear/</a>    18-Dec-2014 08:47 - 
     <img src="/icons/folder.gif" alt="[DIR]"> <a href="anton10.ear/">anton10.ear/</a>    18-Dec-2014 11:11 - 
     .... 
     </pre> 

Так что теперь я пытаюсь получить информацию о <a href=..., но только для тех, которые после <img src=".." alt="[DIR]">...

So я создал XPath, который выглядит следующим образом:

tester.getElementsByXPath("/html/body/pre/*[self::img[@alt='[DIR]']]"); 

выше только дать мне <img ...> элементов. Но мне нужны элементы <a href=""..>.

Кто-нибудь знает, что я делаю неправильно?

ответ

1

Вы можете получить следующий a братьев и сестер, используя селектор following-sibling:

/html/body/pre/*[self::img[@alt='[DIR]']]/following-sibling::a 
1

После уборки в HTML, так что он может быть разобрано как XML, и предполагая, что <img> теги самостоятельно закрыты (то есть не обернуть а-в), это должно найти XPath любого а, с предыдущим собратом, который является одновременно img и имеет alt='[DIR]' атрибут:

/html//a[(preceding-sibling::img[1])[1][local-name()='img' and @alt='[DIR]']] 
+0

Я хотел бы дать как в accept..but я могу только дать один , Оба решения работают. Утилизация невозможна, так как результат автоматически создается настроенным HTTP-сервером (Apache). – khmarbaise

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