Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Вопрос по десериализаци (http://forum.oszone.net/showthread.php?t=247831)

navab 27-11-2012 16:46 2034022

Вопрос по десериализаци
 
Господа, прокомментируйте, пжст, вот какой момент.

В коде один из пользовательских типов заполняется из xml следующим образом:

XmlDocument document = new XmlDocument();
document .LoadXml(incomingXml);
XPathNavigator navigator = doc.CreateNavigator()
XPathNavigator routingNav = navigator.SelectSingleNode("looking for that it is necessary", namespace);
XmlSerializer s = new XmlSerializer(typeof(MyType));
using (StringReader r = new StringReader(routingNav.OuterXml))
{
using (XmlReader reader = XmlReader.Create(r))
{
mytype= (MyType)s.Deserialize(reader);
}
}

Все работает, но смущает, что использовать приходится и XPathNavigator, и StringReader, и XmlReader. Найти материалы про десериализацию, скажем, XPathNavigator напрямую не удалось. Есть ли более компактный способ десериализации?
Спасибо.

Tonny_Bennet 28-11-2012 09:38 2034470

Я проще десериализовывал объекты:

Код:

        public Module(string path)
        {
            Module mod;

            XmlSerializer ModSerializer = new XmlSerializer(this.GetType());

            using (StreamReader StrReader = File.OpenText(path))
            {
                mod = ModSerializer.Deserialize(StrReader) as Module;
            }

        }


navab 28-11-2012 10:54 2034500

В таком случае выдает:
There is an error in XML document (0, 0).
хотя StringReader необходимый фрагмент XML содержит.

Tonny_Bennet 28-11-2012 12:04 2034550

Скажите у вас не проходит десериализация уже сериализованного объекта. Или вы из некоторого XML файла пытаетесь восстановить объект?

navab 28-11-2012 15:43 2034703

Сериализованный объект приходит как часть пакета. Из соответствующего этому объекту xml надо выдернуть определенный кусок, и на его основе десериализовать экземпляр, тип которого заранее определен

Tonny_Bennet 28-11-2012 16:47 2034735

Можете привести примеры пакета, пример того что вы из него выдернули для десериализации.

А также создать тестовый экземпляр класса и сериализовать его. Покажите что получилось.

navab 29-11-2012 11:08 2035144

Входной xml передается в метод как string (incomingXml в коде выше), далее XPathNavigator выбирается нужный элемент со всеми дочерними элементами и десериализуется как показано выше.

Tonny_Bennet 29-11-2012 12:11 2035175

Покажите
Цитата:

Цитата navab
Входной xml »

покажите результат
Цитата:

Цитата navab
XPathNavigator выбирается нужный элемент со всеми дочерними элементами »

Также создайте элемент класса.
Цитата:

Цитата navab
MyType »

сериализуйте его и выложите XML


Время: 22:45.

Время: 22:45.
© OSzone.net 2001-