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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XML -- DataSet, попытка намбер ту 
:(
    Опции темы
HellMasterHaiL
Дата 5.3.2007, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 181
Регистрация: 9.8.2006
Где: Россия, МО, г. Юб илейный

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



Это опять я с мучающим меня вопросом..)
Мне посоветовали открыть новую тему, т.к. блин уже все стало не понятно в предыдущей!

Итак: есть ДатаСет, созданный конструктором.
В этом ДатаСете есть таблици, связи и так далее!
есть XML файл с данными, которые каждый раз разные. Т.е. на пример один раз в файле данные, скажем для таблици ФИО, в другой раз в файле содержаться данные для таблици ФОТО, но обе эти таблици связаны с таблицей ЧЕЛОВЕК.
т.е. один раз мы имеем в файле что-то вроде:
Код

<chelovek>
  <id>...</id>
  <flag1>...</flag1>
  <FIO>
     <id>...</id>
     <Fam>...</fam>
     <Oth>...</Oth>
  </FIO>
</chelovek>
второй раз мы имеем что-то типа:
Код

<chelovek>
  <id>...</id>
  <flag2>...</flag2> (флага 1 уже нет!)
  <PHOTO>
     <id>...</id>
     <photo>...</photo> (фото в формате строки)
   </PHOTO>
</chelovek>

соответственно в ДатаСете есть все эти три таблици!
Вот как сделать подкачку таких данных в такой датасет? можно при этом избежать "построчного" чтения файла?
метод DataSet.XMLRead не работает. пробовал изначально читать схему в датасет, тоже не помогает. Пробовал ищраться с XMLDocument и XMLDataDocument... не помогаеть...(
Данные нужно впендюрить именно в такой ДатаСет, сделанный конструктором с объявленной структорой.

Надеюсь объяснил ситуацию нормально...
В общем хелп ми плиз(((

 smile  smile  smile 


Это сообщение отредактировал(а) HellMasterHaiL - 5.3.2007, 15:54
PM MAIL ICQ   Вверх
mr.DUDA
Дата 5.3.2007, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Если структура XML не задана жёстко, то юзай напрямую dataSet.ReadXml/WriteXml, а иначе только ручками заполнять с XmlTextReader-ом smile

З.Ы, а почему такой красный всегда ?  smile 
и код, в том числе XML, можно и нужно кнопкой "Код" оформлять.


--------------------
user posted image
PM MAIL WWW   Вверх
HellMasterHaiL
Дата 5.3.2007, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 181
Регистрация: 9.8.2006
Где: Россия, МО, г. Юб илейный

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



mr.DUDA, да, структура XML файла получается всегда разная, т.к. не всегда мне нужно выгружать в XML фотографии людей (скажем людей 1000, ФИО нужно всех, а фотографии тлько 10ти человек)...
можешь дать примерчик работы с XmlTextReader ???

Зы цвет красный - это дело привычки и принципа... рука на автомате тянется к комбобоксу с выбором текста))) код оформил!

PM MAIL ICQ   Вверх
mr.DUDA
Дата 5.3.2007, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Например так:

Код
using System;
using System.Xml;

class Program
{
    static void Main()
    {
        XmlTextReader reader = new XmlTextReader(@"c:\1.xml");

        while (reader.Read())
        {
            if (reader.IsStartElement())
            {
                if (reader.IsEmptyElement)
                    Console.WriteLine("<{0}/>", reader.Name);
                else
                {
                    Console.Write("<{0}> ", reader.Name);
                    reader.Read(); // Read the start tag.
                    if (reader.IsStartElement())  // Handle nested elements.
                        Console.Write("\r\n<{0}>", reader.Name);
                    Console.WriteLine(reader.ReadString());  //Read the text content of the element.
                }
            }
        }

    }
}



--------------------
user posted image
PM MAIL WWW   Вверх
HellMasterHaiL
Дата 5.3.2007, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 181
Регистрация: 9.8.2006
Где: Россия, МО, г. Юб илейный

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



понял, спасибо за примерчик, попробую поковырять!
PM MAIL ICQ   Вверх
mr.DUDA
Дата 5.3.2007, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Все нужные примеры можно найти в мсдн, главное хорошо искать smile


--------------------
user posted image
PM MAIL WWW   Вверх
HellMasterHaiL
Дата 5.3.2007, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 181
Регистрация: 9.8.2006
Где: Россия, МО, г. Юб илейный

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



mr.DUDA, вот смотри какая интересность получается.
В ДатаСете ручками в конструкторе сделал структур (таблички, поля, связи и все в таком духе)
вот...
короче я обеспечил чтение в такой датасет XML файла, структура которого описана выше в моем первом посте этой темы... сам не знаю, но почему-то вот это заработало:

Код

me.DataSet.WriteXmlShema (filePathShema) 'путь к файлу, где лежит нормальны, полная схема
me.DataSet.WriteXml (filPathData) 'путь файла, где лежат данные
'(соответсвенно схема этого файла, немного отличается от схемы прочитанной выше) 

короче я недопер почему так сработало и почему не работает, если схему не прочитать(

PM MAIL ICQ   Вверх
mr.DUDA
Дата 5.3.2007, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Потому что схема описывает структуру датасета. Если её не прочитать (кстати, а откуда у тебя схема ?), то данные датасета не зачитаются потому что непонятно по какой схеме отображать XML на таблицы, поля и т.п.


--------------------
user posted image
PM MAIL WWW   Вверх
HellMasterHaiL
Дата 6.3.2007, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 181
Регистрация: 9.8.2006
Где: Россия, МО, г. Юб илейный

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



mr.DUDA, схему украл из датасета, который выгружает эти XML файлы!
но раньше, даже если считывал схему и данные, то не мог их отобразить в табличнов виде (в ДатаСете)... прямо полтергейст какой-то творится))) 
ничего не понимаю, но главное, что заработало))))

Кстати, как на основе схемы создать табличное представление? опять все построково?


Это сообщение отредактировал(а) HellMasterHaiL - 6.3.2007, 09:13
PM MAIL ICQ   Вверх
6atoh
Дата 7.3.2007, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(HellMasterHaiL @  6.3.2007,  08:10 Найти цитируемый пост)
Кстати, как на основе схемы создать табличное представление? опять все построково?

есть метод ReadXmlSchema, вызываешь его для датасета или отдельной таблицы.
PM MAIL ICQ   Вверх
HellMasterHaiL
Дата 7.3.2007, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 181
Регистрация: 9.8.2006
Где: Россия, МО, г. Юб илейный

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



6atoh, на основе прочитанной схемы не формируется табличное представление!
т.е. нельзя обратится так: DataSet.DataTable.Rows(0).Item(0), по крайней мере мне студия говорит, что так низя!

PM MAIL ICQ   Вверх
mr.DUDA
Дата 8.3.2007, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Цитата(HellMasterHaiL @  7.3.2007,  09:03 Найти цитируемый пост)
 DataSet.DataTable.Rows(0).Item(0),

Не скомпилируется, надо:

Код
theDataSet.Tables(0).Rows(0).Item(0)



--------------------
user posted image
PM MAIL WWW   Вверх
6atoh
Дата 9.3.2007, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Во-первых разберись в основах языка.
Во-вторых при таком обращении ты пытаешься получить содержимое первой ячейки таблицы, в которой ничего нет. Для работы со схемой нужно работать не с Rows а с Columns. Например:
Код

Console.WriteLine("Названия столбцов первой таблицы:\n");
foreach(DataColumn column in ds.Tables[0].Columns)
{
       Console.WriteLine(column.ColumnName+"\t");
}

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

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

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

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


 




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


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

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