XPath-запрос для определения нетегированного текста - PullRequest
3 голосов
/ 03 ноября 2010

Рассмотрим этот HTML:

<html>
  <head>
  </head>
<body>
  <table>
    <tr>
      <td>
        <h1>title</h1>
        <h3>item 1</h3>
          text details for item 1
        <h3>item 2</h3>
          text details for item 2
        <h3>item 3</h3>
          text details for item 3
      </td>
    </tr>
  </table>
</body>
</html>

Я не очень знаком с XPath, но мне кажется, что нет никакой записи, которая бы соответствовала разделам "детали текста" индивидуально. Вы можете подтвердить?

Ответы [ 2 ]

2 голосов
/ 03 ноября 2010

Используйте

/html/body/table/tr/td/h3/following-sibling::text()[1]

Это означает: Получить первый следующий родственный текстовый узел каждого элемента h3, который является дочерним элементом каждого элемента tr, который является дочерним элементом каждого элемента table, который является дочерним элементом каждого элемента body, который является дочерним элементом html верхнего элемента.

Или, если вы знаете только, что искомые текстовые узлы являются ближайшими родственниками всех h3 элементов в документе, тогда выражение XPath выбирает их:

//h3/following-sibling::text()[1]
1 голос
/ 03 ноября 2010

в мире Xml / Xpath

Текст - это тип элемента элемента.

так, учитывая ваш пример

TD имеет 7 дочерних узлов

TD.getChild (3) должен возвращать значение «текстовые данные для элемента 1».

в XPath $ x // table / tr / td / text () [1]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...