Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XPath id(), Что не так делаю? 
V
    Опции темы
Mr_Smith
Дата 24.5.2007, 04:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Здравствуйте.
у меня есть XML вида:
Код

<?xml version="1.0" encoding="utf-8" ?>
<root>
  <el ID="m1">
    <item ID="e31" val="sssssss"/>
    <item ID="e32" val="334344"/>
    <item ID="e33" val="cvcvcvcv"/>
  </el>
  <el ID="m2">
    <item ID="e51" val="s5555ssssss"/>
    <item ID="e52" val="355534344"/>
    <item ID="e53" val="cv5555cvcvcv"/>
  </el>
</root>

и сгенерированная для него схема:
Код

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="root">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="el">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" name="item">
                <xs:complexType>
                  <xs:attribute name="ID"  type="xs:ID" use="required" />
                  <xs:attribute name="val" type="xs:string" use="required" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="ID" type="xs:ID" use="required" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>


Теперь в коде пытаюсь получить к примеру узлы  e31 и e33 с помощью функции Xpath id():
Код

        XmlDocument doc = new XmlDocument();
        ListItemCollection list = new ListItemCollection();
        try
        {
            doc.Load(MapPath("~/App_Data/") + "XMLFile.xml");
            XmlNodeList nodelist = doc.SelectNodes("id('e31 e33')");
            foreach (XmlNode n in nodelist)
            {
                list.Add(new ListItem(n.Attributes["ID"].Value, n.Attributes["val"].Value));
            }
        }
        catch
        { }
        RadioButtonList1.DataSource = list;
        RadioButtonList1.DataBind();

Список пуст. Тут одно из двух- либо я что-то не так делаю, либо Xpath функция id() студии незнакома, что странно.
Каким образом тогда по-другому можно получить набор узлов по критерию? Перебор всего документа в XMLReader не предлагать smile 
PM MAIL ICQ   Вверх
Naum
Дата 24.5.2007, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

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



Цитата(Mr_Smith @  24.5.2007,  05:49 Найти цитируемый пост)
Каким образом тогда по-другому можно получить набор узлов по критерию?

Можно попробовать:
Код

XmlNode myNode = doc.SelectSingleNode(string.Format("//item[@ID='{0}']", myID));




--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
Mr_Smith
Дата 24.5.2007, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Naum это не то что я хотел.
Требовалось получить именно список, задав в поиск набор ID.
Вся загвоздка была в том что для того, чтобы эта фишка заработала, документ надо валидировать именно с помощью DTD. По непонятным мне причинам XSD валидация с указанием полей типа ID не позволяет пользоваться XPath функцией  id(). 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




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


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

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