Маппинг xml документа в объект
От: Дмитрий Ф.  
Дата: 18.06.09 12:26
Оценка:
Всем привет. Сталкивался ли кто с проблемой маппинга xml в объект C#? Сериализация не подходит. Если кто знает, поделитесь опытом и знанием. В интернете нашел книгу Mapping XML to C# Objects Using Reflection(Amazon) возможно это то, что надо, но найти чтобы скачать не удалось.
Ab altero expectes, alteri quod feceris.
Re: Маппинг xml документа в объект
От: Andir Россия
Дата: 18.06.09 12:32
Оценка:
Здравствуйте, Дмитрий Ф., Вы писали:

ДФ>Всем привет. Сталкивался ли кто с проблемой маппинга xml в объект C#? Сериализация не подходит. Если кто знает, поделитесь опытом и знанием.


А в чём именно проблема?
Берёшь любую подходящую XML-технологию (XmlDocument, XPathNavigator, XLinq и т.п.) и маппишь на объект.

С Уважением, Andir!
using( RSDN@Home 1.2.0 alpha 4 rev. 1229 ) { /* Работаем */ }
Re[2]: Маппинг xml документа в объект
От: Дмитрий Ф.  
Дата: 18.06.09 12:39
Оценка:
Здравствуйте, Andir, Вы писали:

A>Здравствуйте, Дмитрий Ф., Вы писали:


ДФ>>Всем привет. Сталкивался ли кто с проблемой маппинга xml в объект C#? Сериализация не подходит. Если кто знает, поделитесь опытом и знанием.


A>А в чём именно проблема?

A>Берёшь любую подходящую XML-технологию (XmlDocument, XPathNavigator, XLinq и т.п.) и маппишь на объект.

A>С Уважением, Andir!

XmlDocument, так же как и другие классы работающие с DOM, файлы могут занимать большие объемы, нужна реализация например с использованием XmlTextReader
Ab altero expectes, alteri quod feceris.
Re[3]: Маппинг xml документа в объект
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 18.06.09 15:06
Оценка:
Здравствуйте, Дмитрий Ф., Вы писали:

ДФ>XmlDocument, так же как и другие классы работающие с DOM, файлы могут занимать большие объемы, нужна реализация например с использованием XmlTextReader


Ну так сделай с использованием ридера. В чём проблема-то?
[КУ] оккупировала армия.
Re: Маппинг xml документа в объект
От: sinister  
Дата: 18.06.09 17:24
Оценка: +1
почему не подходит сериализация? если она и будет работать медленне чем написаный код, то не на много, так как для сериализации один раз генерится код при сборке сборки( =) ).

если проблема в том, что схема xml не совсем совдатает с той, что нужна для сериализации объекта, то можно написать xslt которые преобразует исходный xml в тот, из которого можно десериализовать объект.
Re: Маппинг xml документа в объект
От: Neco  
Дата: 19.06.09 12:52
Оценка:
Здравствуйте, Дмитрий Ф., Вы писали:

ДФ>Всем привет. Сталкивался ли кто с проблемой маппинга xml в объект C#? Сериализация не подходит.

напоминает "чёрный, на трёх ножках, но не рояль".
вы бы описали суть проблемы, чтобы было из чего выбирать.
всю ночь не ем, весь день не сплю — устаю
Re[2]: Маппинг xml документа в объект
От: Воронков Василий Россия  
Дата: 19.06.09 19:31
Оценка:
Здравствуйте, sinister, Вы писали:

S>почему не подходит сериализация? если она и будет работать медленне чем написаный код, то не на много, так как для сериализации один раз генерится код при сборке сборки( =) ).


Ну если делать "руками" согласно советам из книги Mapping XML to C# Objects Using Reflection, то сериализация будет даже быстрее.
Re[2]: Маппинг xml документа в объект
От: Дмитрий Ф.  
Дата: 19.06.09 20:06
Оценка:
Здравствуйте, Neco, Вы писали:

N>Здравствуйте, Дмитрий Ф., Вы писали:


ДФ>>Всем привет. Сталкивался ли кто с проблемой маппинга xml в объект C#? Сериализация не подходит.

N>напоминает "чёрный, на трёх ножках, но не рояль".
N>вы бы описали суть проблемы, чтобы было из чего выбирать.
Есть файл XML, занимает ~500Мб, сериализация работать отказывается.
Ab altero expectes, alteri quod feceris.
Re[3]: Маппинг xml документа в объект
От: drol  
Дата: 19.06.09 20:44
Оценка:
Здравствуйте, Дмитрий Ф., Вы писали:

ДФ>Есть файл XML, занимает ~500Мб, сериализация работать отказывается.


"Бензин кончился," — догадался Штирлиц.
Re[3]: Маппинг xml документа в объект
От: Lloyd Россия  
Дата: 19.06.09 22:38
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Ну если делать "руками" согласно советам из книги Mapping XML to C# Objects Using Reflection, то сериализация будет даже быстрее.


Не обязательно. Reflection — это же не только System.Reflection, но и System.Reflection.Emit
Re[3]: Маппинг xml документа в объект
От: Lloyd Россия  
Дата: 19.06.09 23:06
Оценка: +1
Здравствуйте, Дмитрий Ф., Вы писали:

N>>вы бы описали суть проблемы, чтобы было из чего выбирать.

ДФ>Есть файл XML, занимает ~500Мб, сериализация работать отказывается.

Если xml "плоский", то можно попробовать вот такой подход:
var ser = new XmlSerializer(typeof(Row));
using (var reader = XmlReader.Create("Data.xml")) {
    while (reader.Read()) {
        if (reader.NodeType == XmlNodeType.Element && reader.Name == "Row") {
            using (var rowReader = reader.ReadSubtree()) {
                var row = (Row)ser.Deserialize(rowReader);
                Console.WriteLine(row);
            }
        }
    }
}
Re[3]: Маппинг xml документа в объект
От: Воронков Василий Россия  
Дата: 19.06.09 23:32
Оценка:
Здравствуйте, Дмитрий Ф., Вы писали:

ДФ>>>Всем привет. Сталкивался ли кто с проблемой маппинга xml в объект C#? Сериализация не подходит.

N>>напоминает "чёрный, на трёх ножках, но не рояль".
N>>вы бы описали суть проблемы, чтобы было из чего выбирать.
ДФ>Есть файл XML, занимает ~500Мб, сериализация работать отказывается.

И что хранится в этом файле? Его нужно обязательно вычитывать весь? Что-то мне кажется, что ХМЛ тут вообще не по адресу.
Re[4]: Маппинг xml документа в объект
От: Дмитрий Ф.  
Дата: 20.06.09 07:01
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Здравствуйте, Дмитрий Ф., Вы писали:


ДФ>>>>Всем привет. Сталкивался ли кто с проблемой маппинга xml в объект C#? Сериализация не подходит.

N>>>напоминает "чёрный, на трёх ножках, но не рояль".
N>>>вы бы описали суть проблемы, чтобы было из чего выбирать.
ДФ>>Есть файл XML, занимает ~500Мб, сериализация работать отказывается.

ВВ>И что хранится в этом файле? Его нужно обязательно вычитывать весь? Что-то мне кажется, что ХМЛ тут вообще не по адресу.

XML надо читать весь, каждый аттрибут. Вабора насчет формата нет, есть только задача: прочитать файл, раскидать по объектам, записать в базу.
Ab altero expectes, alteri quod feceris.
Re[4]: Маппинг xml документа в объект
От: Дмитрий Ф.  
Дата: 20.06.09 07:02
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, Дмитрий Ф., Вы писали:


N>>>вы бы описали суть проблемы, чтобы было из чего выбирать.

ДФ>>Есть файл XML, занимает ~500Мб, сериализация работать отказывается.

L>Если xml "плоский", то можно попробовать вот такой подход:

L>
L>var ser = new XmlSerializer(typeof(Row));
L>using (var reader = XmlReader.Create("Data.xml")) {
L>    while (reader.Read()) {
L>        if (reader.NodeType == XmlNodeType.Element && reader.Name == "Row") {
L>            using (var rowReader = reader.ReadSubtree()) {
L>                var row = (Row)ser.Deserialize(rowReader);
L>                Console.WriteLine(row);
L>            }
L>        }
L>    }
L>}
L>


XML имеет вложенную структуру
Ab altero expectes, alteri quod feceris.
Re[4]: Маппинг xml документа в объект
От: TK Лес кывт.рф
Дата: 20.06.09 08:12
Оценка:
Здравствуйте, koandrew, Вы писали:

ДФ>>XmlDocument, так же как и другие классы работающие с DOM, файлы могут занимать большие объемы, нужна реализация например с использованием XmlTextReader


K>Ну так сделай с использованием ридера. В чём проблема-то?


А как вам поможет reader в случае больших объемов реляционных данных? Единственное, что он вам даст — это необходимость перечитывать весь файл практически на каждый чих.

XML и большие объемы разумны только в случае потоковой обработки. Все остальные варианты надо либо сводить к потоковой обработке либо, грузить XML в хранилище предоставляющее произвольный доступ к своему содержимому.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re: Маппинг xml документа в объект
От: meowth  
Дата: 20.06.09 10:54
Оценка:
Здравствуйте, Дмитрий Ф., Вы писали:

ДФ>Всем привет. Сталкивался ли кто с проблемой маппинга xml в объект C#? Сериализация не подходит. Если кто знает, поделитесь опытом и знанием. В интернете нашел книгу Mapping XML to C# Objects Using Reflection(Amazon) возможно это то, что надо, но найти чтобы скачать не удалось.


Посмотрите в сторону ObjectXPathNavigator -- возможно, в вашей задаче можно свести все к манипулированию с xml как для документа, так и для объектов
Re[3]: Маппинг xml документа в объект
От: Дмитрий Ф.  
Дата: 20.06.09 14:23
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Здравствуйте, sinister, Вы писали:


S>>почему не подходит сериализация? если она и будет работать медленне чем написаный код, то не на много, так как для сериализации один раз генерится код при сборке сборки( =) ).


ВВ>Ну если делать "руками" согласно советам из книги Mapping XML to C# Objects Using Reflection, то сериализация будет даже быстрее.

А есть ли книга в электронном виде?
Ab altero expectes, alteri quod feceris.
Re[5]: Маппинг xml документа в объект
От: Lloyd Россия  
Дата: 20.06.09 19:46
Оценка:
Здравствуйте, Дмитрий Ф., Вы писали:

ДФ>XML имеет вложенную структуру


Сильновложенную? Или большое количество повторяющихся "сложных" записей?
Re[5]: Маппинг xml документа в объект
От: Lloyd Россия  
Дата: 20.06.09 19:50
Оценка:
Здравствуйте, Дмитрий Ф., Вы писали:

ВВ>>И что хранится в этом файле? Его нужно обязательно вычитывать весь? Что-то мне кажется, что ХМЛ тут вообще не по адресу.

ДФ>XML надо читать весь, каждый аттрибут. Вабора насчет формата нет, есть только задача: прочитать файл, раскидать по объектам, записать в базу.

Тогда не совсем понятно, чем не устраивает xml-сериализация?
Re[5]: Маппинг xml документа в объект
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 20.06.09 21:42
Оценка:
Здравствуйте, Дмитрий Ф., Вы писали:

ДФ>Здравствуйте, Воронков Василий, Вы писали:


ВВ>>Здравствуйте, Дмитрий Ф., Вы писали:


ДФ>>>>>Всем привет. Сталкивался ли кто с проблемой маппинга xml в объект C#? Сериализация не подходит.

N>>>>напоминает "чёрный, на трёх ножках, но не рояль".
N>>>>вы бы описали суть проблемы, чтобы было из чего выбирать.
ДФ>>>Есть файл XML, занимает ~500Мб, сериализация работать отказывается.

ВВ>>И что хранится в этом файле? Его нужно обязательно вычитывать весь? Что-то мне кажется, что ХМЛ тут вообще не по адресу.

ДФ>XML надо читать весь, каждый аттрибут. Вабора насчет формата нет, есть только задача: прочитать файл, раскидать по объектам, записать в базу.

А не легче сделать ХП на сервере, которая будет парсить xml и писать в базу?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.