Рассмотрите простой XML-документ:
<html><body>
<table>
<tr><td> Item 1</td></tr>
<tr><td> Item 2</td></tr>
</table>
</body></html>
Использование XPath /html/body/table/tr/td/text()
мы доберемся
[" Item 1", " Item 2"].
Действительно ли возможно обрезать пробел, например, с помощью normalize-space()
функция для получения этого?
["Item 1", "Item 2"]
normalize-space(/html/body/table/tr/td/text())
урожаи обрезали содержание только первого тега TD ["Item 1"]
Использование XPath "/ html / body / table / tr / td / text ()" мы получит [«Предмет 1», «Предмет 2»].
Можно ли обрезать пустое пространство для пример использования normalize-space () функция для получения ["Item 1", "Item 2"]?
Нет в XPath 1.0 .
В Xpath 2.0 это просто :
/html/body/table/tr/td/text()/normalize-space(.)
В XPath 2.0 шаг местоположения выражения XPath может быть ссылкой на функцию. Это используется в приведенном выше выражении для создания последовательности из xs: string
элементов, каждый из которых является результатом применения normalize-space ()
к контекстному узлу (любой выбранный узел подвыражением, которое предшествует последнему шагу местоположения).
Если вы используете XPath 2.0, вы можете просто использовать /html/body/table/tr/td/normalize-space(.)
Если вы застряли с XPath 1.0, я не верю, что это возможно. Вам просто придется перебирать результирующие строки и нормализовать их.