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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите распасить xml - XmlReader 
V
    Опции темы
gambit
Дата 16.3.2011, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

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



Доброго дня.
Стоит необходимость распарсить xml
Код

<item>
<item id="1" type="admin" name="asdf asda"/>
<item id="2" type="agency" name="M Group">
<item id="3" type="agency_group" name="Группа по умолчанию">
<item id="21" type="user" name="123"/>
</item>
</item>
</item>


а я что то с утра туплю. Как распарсить подобный xml?? Как бежать по нему, как читать параметры. Что то, что бы я ни делал все мое счастье либо падает, либо возвращает пустые строки((
PM MAIL ICQ Skype   Вверх
Voyager
Дата 16.3.2011, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



XmlTextReader
PM   Вверх
mrbrooks
Дата 16.3.2011, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


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

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



gambit, старина, а чем Linq 2 Xml не угодил? 

Код

<?xml version="1.0" encoding="utf-8" ?> 
<item>
 <item id="1" type="admin" name="asdf asda"/>
     <item id="2" type="agency" name="M Group">
        <item id="3" type="agency_group" name="Группа по умолчанию">
            <item id="21" type="user" name="123"/>
        </item>
     </item>
</item>


Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;

namespace gambit
{
    public class Gambit
    {
        private static readonly List<IEnumerable<XAttribute>> List = new List<IEnumerable<XAttribute>>();
        public static void Main()
        {
                XDocument doc = XDocument.Load("gambit.xml");
                var elems = doc.Elements().Elements();
                GetAttr(elems);

                var separator = new string('-', 15);
                List.ForEach(action =>
                                  {
                                      
                                      foreach (var a in action)
                                          Console.WriteLine(a.Name + ":" + a.Value);
                                      Console.WriteLine(separator);
                                  });
        }

        private static void GetAttr(IEnumerable<XElement> elem)
        {
            if(elem.Count() != 0)
            {
                foreach (var e in elem)
                {
                    List.Add(e.Attributes());
                    GetAttr(e.Elements());
                }
            }
        }
    }
}

PM MAIL   Вверх
gambit
Дата 17.3.2011, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

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



Забил на реадер, переписал на XmlDocument, и вся проблема решилась, из xmldoc распарсил за пол часа, хотя до этого с реадером сидел несколько часов. 
mrbrooks, спасибо, за помощь.
Voyager, охрененный совет.
PM MAIL ICQ Skype   Вверх
Voyager
Дата 17.3.2011, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



gambit, а чего вы ожидали? Расписать все методы ридера? Для этого есть MSDN, там все подробно указано, с примерами.
PM   Вверх
gambit
Дата 17.3.2011, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

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



Цитата(Voyager @  17.3.2011,  10:46 Найти цитируемый пост)
а чего вы ожидали?

Я ожидал ответ в стиле mrbrooks. А ваш ответ вообще не в тему
- как распарсить с помощью XmlReader
- используй XmlReader
Вы только забыли подписаться "КО"
Цитата(Voyager @  17.3.2011,  10:46 Найти цитируемый пост)
Расписать все методы ридера? Для этого есть MSDN, там все подробно указано, с примерами. 

методы его, я знаю.
PM MAIL ICQ Skype   Вверх
Voyager
Дата 17.3.2011, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Тогда не понимаю в чем проблема с XmlTextReader, там программирование минимально.

http://msdn.microsoft.com/ru-ru/library/sy...eader.read.aspx
http://msdn.microsoft.com/ru-ru/library/sy...textreader.aspx


Это сообщение отредактировал(а) Voyager - 17.3.2011, 15:40
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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