Нахождение строки, которая разделена на несколько тегов HTML - PullRequest
0 голосов
/ 17 сентября 2010

Я использую Xpath, чтобы найти список строк в документе HTML.Строки появляются при вводе в текстовое поле, чтобы предложить возможные результаты - другими словами, это автозаполнение.Проблема в том, что я пытаюсь получить весь список предложений автозаполнения, результаты разбиты на теги .

Чтобы привести пару примеров: я начинаю набирать «str» иHTML будет выглядеть так:

str ing

Но это становится лучше!Если я вообще ничего не наберу, каждый отдельный символ в результатах автозаполнения будет прерываться открытием и закрытием сильных тегов.Вот так:

s т r i n g

Итак, мой вопрос, как мне создать xpath, который извлекает эту строку, но опускает сильные теги?

Для справки, иерархия HTML выглядит следующим образом:

-div
--ul
--- li
---- (искомая строка)
--- li
---- (искомая строка)

Итак, мой xpath на этом этапе: // div [@ class = 'class'] / ul / li / text (), который получит мне отдельные части строк.

Ответы [ 2 ]

1 голос
/ 17 сентября 2010

Это выражение XPath :

string(PathToYourDiv/ul/li[$n])

соответствует строковому значению $ n-го li дочернего элемента ul, являющегося дочерним элементом YourDiv. И это конкатенация всех потомков текстовых узлов этого элемента li, что фактически дает вам полную строку, которую вы хотите.

Вам нужно просто заменить YourDiv и $ n конкретными выражениями.

Не используйте сокращение //, потому что :

  1. Оценка может быть очень медленной.

  2. Индексирование такого выражения с помощью [] не является интуитивно понятным и приводит к удивительным результатам, приводящим к часто задаваемым вопросам.

0 голосов
/ 17 сентября 2010

Это гораздо меньше кода по этому вопросу, чем люди хотели бы видеть здесь.

Но почему бы вам не попробовать такой вариант:

//div[@class='class']/ul/li/strong/text()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...