![]() |
Вопрос по десериализаци
Господа, прокомментируйте, пжст, вот какой момент.
В коде один из пользовательских типов заполняется из 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 напрямую не удалось. Есть ли более компактный способ десериализации? Спасибо. |
Я проще десериализовывал объекты:
Код:
public Module(string path) |
В таком случае выдает:
There is an error in XML document (0, 0). хотя StringReader необходимый фрагмент XML содержит. |
Скажите у вас не проходит десериализация уже сериализованного объекта. Или вы из некоторого XML файла пытаетесь восстановить объект?
|
Сериализованный объект приходит как часть пакета. Из соответствующего этому объекту xml надо выдернуть определенный кусок, и на его основе десериализовать экземпляр, тип которого заранее определен
|
Можете привести примеры пакета, пример того что вы из него выдернули для десериализации.
А также создать тестовый экземпляр класса и сериализовать его. Покажите что получилось. |
Входной xml передается в метод как string (incomingXml в коде выше), далее XPathNavigator выбирается нужный элемент со всеми дочерними элементами и десериализуется как показано выше.
|
|
Время: 22:45. |
Время: 22:45.
© OSzone.net 2001-