Как избавиться от тегов в XPath - PullRequest
0 голосов
/ 02 марта 2020

У меня есть куча html файлов с тоннами данных, и я хочу извлечь важные части из них.

Все файлы очень похожи; Я должен искать <tr>, который содержит определенное ключевое слово. Третий столбец этой строки таблицы всегда содержит имя «блока», который я ищу (это несколько строк таблицы).

//body/table/tbody/tr[td = "Deployed to"]/td[3]/div//span[text()]

с помощью этого запроса XPath я получаю имена (возможно, одно, а может и больше). Проблема в том, как избавиться от тегов вокруг данных?

Прямо сейчас мой вывод что-то вроде этого:

<span class="log_entry_text">Name1</span><span class="log_entry_text">Name2</span><span class="log_entry_text">Name3</span>

Я хочу иметь что-то вроде этого: Имя1 Имя2 Имя3 Так что я могу использовать его для более простого извлечения этих блоков. С помощью string () я могу извлечь только первый элемент (результат будет: Name1)

Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 04 марта 2020

Просто оберните ваш xpath элементом data (), таким как data (// body / table / tbody / tr [td = "Развернуто в"] / td [3] / div // span [text ()]) для получения текст.

0 голосов
/ 02 марта 2020

Ваше выражение XPath просит извлечь span элементы, и это то, что оно вернуло. Если вы видите теги с угловыми скобками в выводе, это из-за того, как результат XPath обрабатывается и обрабатывается принимающим приложением.

Если вы используете XPath 2.0+ или XQuery 1.0+, вы можете объединить несколько элементов span в одну строку, используя

string-join(//path/span, ' ')
...