Создание XPath с использованием функции contains ()

0

Для приложения iOS я использую открытый HTML-анализатор html под названием Hpple для очистки некоторых данных с веб-страницы. Два <td class="menugridcell"> которые я ищу, это <td class="menugridcell"> и <td class="menugridcell_last">

Я пытаюсь создать один xpath, который ищет любой тег. Я безуспешно пытался использовать функцию "contains()":

NSString *queryString = @"//td[@class=contains(., 'menugridcell')]"

Для этого запроса должно быть 27 узлов, но, как ни странно, я получал 1 (даже не 0). Я попробовал несколько вариантов, но я не могу найти правильный синтаксис.

Для справки, вот как я искал их отдельно

NSString *queryString = @"//td[@class='menugridcell']" (возвращает 18 узлов)

NSString *queryString2 = @"//td[@class='menugridcell_last']" (возвращает 9 узлов)

Теги:
xpath

1 ответ

1
Лучший ответ

Вы можете попробовать:

//td[contains(@class, 'menugridcell')]

Возможные альтернативы - использовать start starts-with() как указано @pault. в комментарии:

//td[starts-with(@class, 'menugridcell')]

или с помощью or для выбора одним из двух условий:

//td[@class='menugridcell' or @class='menugridcell_last']

Во всяком случае, немного удивительно, что библиотека, которую вы используете, не распознает функцию contains(), потому что contains() доступна со спецификацией XPath 1.0.

  • 2
    Другой вариант //td[starts-with(@class, 'menugridcell')]
  • 0
    Кажется, он не распознает функцию содержимого (ошибка неверного префикса), но опция запуска с сработала нормально

Ещё вопросы

Сообщество Overcoder
Наверх
Меню