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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помогите с XML 
V
    Опции темы
VisMaster
Дата 19.3.2008, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Здравствуйте.

Вот кусок XML:
Код

<Group><Title>Network</Title><Icon>34</Icon>
<Item><Title>Primary IP Address</Title><Icon>18</Icon><ID>538</ID><Value>127.0.0.1</Value></Item>
<Item><Title>Primary MAC Address</Title><Icon>18</Icon><ID>539</ID><Value>00-0A-E4-ED-06-F1</Value></Item>
<Item><Title>Network Adapter</Title><Icon>18</Icon><ID>534</ID><Value>Realtek RTL8169/8110 Family Gigabit Ethernet NIC</Value></Item>
<Item><Title>Network Adapter</Title><Icon>219</Icon><ID>534</ID><Value>Сетевой адаптер Broadcom 802.11g</Value></Item>
<Item><Title>Modem</Title><Icon>14</Icon><ID>535</ID><Value>SoftV90 Data Fax Modem with SmartCP</Value></Item>
</Group>


как мне выбрать отсюда "Realtek RTL8169/8110 Family Gigabit Ethernet NIC"??

Извиняюсь конечно, но с xml не работал, так что лучше с примером...

Заранее благодарен.
PM MAIL   Вверх
alexey___
Дата 19.3.2008, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 12.3.2007
Где: Казахстан

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



Вот примерчик

Код

private void button1_Click(object sender, EventArgs e)
{
            string xmlDocument = @"
<Group><Title>Network</Title><Icon>34</Icon>
<Item><Title>Primary IP Address</Title><Icon>18</Icon><ID>538</ID><Value>127.0.0.1</Value></Item>
<Item><Title>Primary MAC Address</Title><Icon>18</Icon><ID>539</ID><Value>00-0A-E4-ED-06-F1</Value></Item>
<Item><Title>Network Adapter</Title><Icon>18</Icon><ID>534</ID><Value>Realtek RTL8169/8110 Family Gigabit Ethernet NIC</Value></Item>
<Item><Title>Network Adapter</Title><Icon>219</Icon><ID>534</ID><Value>Сетевой адаптер Broadcom 802.11g</Value></Item>
<Item><Title>Modem</Title><Icon>14</Icon><ID>535</ID><Value>SoftV90 Data Fax Modem with SmartCP</Value></Item>
</Group>
                                    ";

            System.Xml.XmlDocument xml = new System.Xml.XmlDocument();
            xml.LoadXml(xmlDocument);

            System.Xml.XmlNode node = xml.DocumentElement;
            System.Xml.XmlNodeList xn = node.SelectNodes("Item/Value");

            for (int i = 0; i < xn.Count; i++)
                listBox1.Items.Add(xn[i].InnerText);
}


а вообще вариантов много...
PM MAIL   Вверх
alexey___
Дата 19.3.2008, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 12.3.2007
Где: Казахстан

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



вот ещё примерчик

Код

            System.Xml.Linq.XDocument loaded = System.Xml.Linq.XDocument.Load(@"C:\test\linq.xml");
            var q = from c in loaded.Descendants("Value")
                    where c.Value == "Realtek RTL8169/8110 Family Gigabit Ethernet NIC"
                    select c;

            foreach (string nam in q)
                listBox1.Items.Add(nam);

PM MAIL   Вверх
Rififi
Дата 20.3.2008, 01:01 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

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



VisMaster
изучай XPath, оно рулез.
Например чтобы выбрать все устройства класса "Сетевой адаптер", можно сделать так:

Код

// ... остальной код см. выше
XmlNodeList xn = node.SelectNodes("/Group/Item/Title[text()='Network Adapter']/following-sibling::Value/text()");
for (int i = 0; i < xn.Count; i++)
                listBox1.Items.Add(xn[i].NodeValue);


Это сообщение отредактировал(а) Rififi - 20.3.2008, 01:06
PM MAIL   Вверх
VisMaster
Дата 20.3.2008, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Rififi 

Спасибо за примеры,может у вас есть ссылки на полезные статьи по XPath??? Буду очень благодарен их получить...

А если мне надо (если использовать прошлый пример кода XML) выбрать все значения из всех Item, которые находяться в группе Network??? Пытался так: 
Код

string xmlDocument = @"
<Group><Title>Network</Title><Icon>34</Icon>
<Item><Title>Primary IP Address</Title><Icon>18</Icon><ID>538</ID><Value>127.0.0.1</Value></Item>
<Item><Title>Primary MAC Address</Title><Icon>18</Icon><ID>539</ID><Value>00-0A-E4-ED-06-F1</Value></Item>
<Item><Title>Network Adapter</Title><Icon>18</Icon><ID>534</ID><Value>Realtek RTL8169/8110 Family Gigabit Ethernet NIC</Value></Item>
<Item><Title>Network Adapter</Title><Icon>219</Icon><ID>534</ID><Value>Сетевой адаптер Broadcom 802.11g</Value></Item>
<Item><Title>Modem</Title><Icon>14</Icon><ID>535</ID><Value>SoftV90 Data Fax Modem with SmartCP</Value></Item>
</Group>
                                    ";

            System.Xml.XmlDocument xml = new System.Xml.XmlDocument();
            xml.LoadXml(xmlDocument);

            System.Xml.XmlNode node = xml.DocumentElement;
            XmlNodeList xn = node.SelectNodes("/Group/Title[text()='Network']/Item/following-sibling::Value/text()");
            for (int i = 0; i < xn.Count; i++)
                Console.WriteLine( xn[i].Value);

но не получается... smile 

Это сообщение отредактировал(а) VisMaster - 21.3.2008, 01:08
PM MAIL   Вверх
jaros
Дата 21.3.2008, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 31.5.2007
Где: Тернополь. Украин а

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



Цитата

А если мне надо выбрать все значения из всех Item, которые находяться в группе Network???

Попробуй такой XPath:
/Group[Title/text()='Network']/Item/Value
первая ссылка на XPath из гугла: w3schools
PM MAIL ICQ   Вверх
Rififi
Дата 21.3.2008, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

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



VisMaster
много чего интересного можно найти тут: http://www.isbnonline.com/?q=xpath
некоторые из них вышли на русском

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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