SelectNodes с XPath игнорируя случаи - PullRequest
9 голосов
/ 21 марта 2012

У меня проблема с поиском элементов в XPath, который содержит определенную строку, игнорирующую регистр символов.

Я хочу найти на странице HTML все узлы с идентификатором id, содержащие текст «нижний колонтитул», игнорируя запись в верхнем или нижнем регистре.

В моем примере у меня есть другой текст HTML, как это:

<div id="footer">some text</div>
<div id="anotherfooter">some text</div>
<div id="AnotherFooter">some text</div>
<div id="AnotherFooterAgain">some text</div>

Мне нужно выбрать все узлы (или любую комбинацию в любом случае со словом «нижний колонтитул» в id) с XPath.

В настоящее время я использую этот xpath, но он не работает для идентификатора UpperCase

"//*[contains(./@id, 'footer')]/@id"

Я провел несколько тестов с translate (), но не работает, как я ожидал.

Есть идеи?

РЕДАКТИРОВАТЬ: Я использую HtmlAgilityPack с работами с версией XPath 1.0.

1 Ответ

11 голосов
/ 21 марта 2012

Не уверен, что вы уже пробовали это, но это то, что я делаю для чувствительных к регистру поисков:

//*[contains(translate(./@id,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz'), 'footer')]/@id

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

...