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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XML? 
:(
    Опции темы
unkis
  Дата 10.9.2005, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ребята есть такой вот XML файл:

Код

<Kino>
    <Film id ="1" name = "com">
        <dlina>2</dlinal>
        <razmer>3</razmer>
        <ru_en>ru</ru_en>
    </Film>
        <Film id ="2" name = "kl">
        <dlina>8</dlinal>
        <razmer>9</razmer>
        <ru_en>ru</ru_en>
    </Film>
        <Film id ="3" name = "jk">
        <dlina>6</dlinal>
        <razmer>7</razmer>
        <ru_en>ru</ru_en>
    </Film>
        
</Kino>
 


Надо както добнаться до тега <dlina>2</dlinal>, <razmer>3</razmer>, <ru_en>ru</ru_en> и прочитать их содержания и так для каждого фильма.

Как добраться до этих тегов?


Зарания благодаре.

Это сообщение отредактировал(а) unkis - 10.9.2005, 21:55


--------------------
www.unkis.com
PM MAIL WWW   Вверх
Дрон
Дата 10.9.2005, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


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

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



unkis
Цитата(unkis @ 10.9.2005, 22:55)
Как добраться до этих тегов?

Да всяких разных вариантов навалом smile

Вот два примера. Какой из них лучше зависит от ситуации.
В обоих есть минусы и плюсы, но обоими можно достичь абсолютно одинаковых результатов smile
Код

using System;
using System.Xml; // для первого метода
using System.Data; // для второго метода

namespace ConsoleApplication1
{
    class Class1
    {

        static void Main(string[] args)
        {
            Console.WriteLine("\n\t\t-- Method1 --\n");
            Method1();
            Console.WriteLine("\n\t\t-- Method2 --\n");
            Method2();
            Console.ReadLine();
        }

        static void Method1()
        {
            XmlDocument doc = new XmlDocument();
            doc.Load("C:\\test.xml");
            XmlNodeList films = doc.GetElementsByTagName("Film");
            foreach(XmlElement film in films)
            {
                Console.WriteLine("Film #{0} - {1}",
                    film.Attributes["id"].Value,film.Attributes["name"].Value);
                foreach(XmlElement info in film.ChildNodes)
                {
                    Console.WriteLine("\t{0}: {1}",info.Name, info.InnerText);
                }
            }
        }

        static void Method2()
        {
            DataSet ds = new DataSet();
            ds.ReadXml("C:\\test.xml");
            DataTable films = ds.Tables["Film"];
            foreach(DataRow row in films.Rows)
            {
                Console.WriteLine("Film #{0} - {1}", row["id"],row["name"]);
                foreach(DataColumn col in films.Columns)
                {
                    if(col.Caption!="id" && col.Caption!="name")
                        Console.WriteLine("\t{0}: {1}",col.Caption, row[col]);
                }
            }
        }
    }
}

Мне, например, в данном случае больше нравится второй подход. Ибо случай простой smile
Если есть вопросы -- спрашивай, объясню подробней.

ЗЫ: Кстати, у тебя в XML ошибка: вместо закрывающий тэга </dlinal> должен быть </dlina> smile

Это сообщение отредактировал(а) Дрон - 10.9.2005, 22:32


--------------------
Да. Именно так.
PM   Вверх
unkis
Дата 11.9.2005, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



спасибо.

А если у меня к примеру есть три переменных

Код

double dlina;
double razmer;
string ru_en;


так вот как мне этим переменным присвоить своё значения сначала для филма 1 потом для фильма 2 и так далее.\


Зарания благодарен.


--------------------
www.unkis.com
PM MAIL WWW   Вверх
Дрон
Дата 11.9.2005, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


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

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



Так каким способом пользуемся-то?

Для второго замени первый цикл foreach на вот это:
Код

            foreach(DataRow row in films.Rows) // цикл по всем фильмам -- каждая строка таблицы - один фильм
            {
                    double dlina = double.Parse((row["dlina"].ToString());
                    double razmer  = double.Parse((row["razmer".ToString());
                    string ru_en = row["ru_en"].ToString();
                   // ну а дальше делай с ними что хочешь
            }


Только к чему этот вопрос, мне-то казалось, что я вполне очевидные примеры привёл smile


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

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


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

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


 




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


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

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