Модераторы: diadiavova
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как задать регистронезависимый запрос XPath 
:(
    Опции темы
kolchakA
Дата 11.7.2010, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 15.11.2009

Репутация: нет
Всего: нет



Использую следующий код:
Код

Sgml.SgmlReader rdr = new Sgml.SgmlReader();
XmlDocument doc = new XmlDocument();
rdr.Href = "page.htm";
doc.Load(rdr);
XmlElement elem = (XmlElement)doc.SelectSingleNode("//td[@class='myclass']");


myclass в теле страницы может писаться как Myclass и в других вариантах сочетаний регистров букв. Как задать запрос XPath, чтобы он был регистронезависимым? 

PM MAIL   Вверх
diadiavova
Дата 11.7.2010, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 22
Всего: 142



XML - регистрозависимый язык, так что пытаться решить задачу чисто средствами XPath - в данном случае неправильно. Выбери элементы td (все) и обработай коллекцию в коде.
Код

XmlElement elem = (XmlElement)((IEnumerable<XmlNode>)doc.SelectNodes("//td").Where(
                  x => string.Compare( x.GetAttribute("class"), "myclass", true) == 0)[0]);
как-то так smile 

Это сообщение отредактировал(а) diadiavova - 12.7.2010, 08:02


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
magelan
Дата 13.7.2010, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


потерял xPath
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 5.4.2010

Репутация: 7
Всего: 16



Написать ЖОсткий XPath. Буковки обычно в переменные выносят но можно и так:

Код

//td[translate(@class,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')='myclass']


работать будет со скоростью паравоза "братьев Черепановых", но будет.


upd: можно ускориться, если имя класса не переменная
Код

//td[translate(@class,'ACLMSY','aclmsy')='myclass']



Это сообщение отредактировал(а) magelan - 13.7.2010, 17:27
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

Прежде чем опубликовать вопрос, попробуйте воспользоваться поиском - возможно тема уже поднималась.

Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение.

Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел

Желаем удачи в Вашем деле!


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | XML, XSL | Следующая тема »


 




[ Время генерации скрипта: 0.0397 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.