xmlNode к объектам

Существует маленький штраф на вызов виртуальной функции по сравнению с регулярным вызовом. Вы вряд ли будете наблюдать различие, если Вы не сделаете сотни тысяч вызовов в секунду, и цену часто стоит заплатить за добавленную ясность кода так или иначе.

10
задан alexandrul 23 November 2009 в 15:56
поделиться

2 ответа

Если у вас установлен WCF Rest Starter Kit предварительного просмотра, есть ловкий трюк:

  • открыт Visual Studio
  • выбрать содержимое вашего XML-узла (XML, который составляет один из ваших узлов) и скопируйте его в буфер обмена
  • из меню «Правка» в Visual Studio, выберите «Вставить XML как типы»

. Это вставит ваш XML, который из буфера обмена в ваш проект как класс C #, способный десериализовать именно этот XML.

См. Эти сообщения в блоге об этом:

Это должно вас сильно сэкономить печатать и сделать жизнь намного проще!

ОБНОВЛЕНИЕ:
Хорошо, у вас уже есть классы, сгенерированные из возвращаемого XML. Теперь вам нужно преобразовать XmlNode в свой класс.

Вам нужно будет сделать что-то вроде этого:

private static T ConvertNode<T>(XmlNode node) where T: class
{
    MemoryStream stm = new MemoryStream();

    StreamWriter stw = new StreamWriter(stm);
    stw.Write(node.OuterXml);
    stw.Flush();

    stm.Position = 0;

    XmlSerializer ser = new XmlSerializer(typeof(T));
    T result = (ser.Deserialize(stm) as T);

    return result;
}

Вам нужно написать представление XML (свойство .OuterXml ) XmlNode в поток (здесь MemoryStream ), а затем используйте XmlSerializer для обратной сериализации объекта из этого потока.

Вы можете сделать это с помощью универсального метода и вызова

 Customer myCustomer = ConvertNode<Customer>(xmlNode);

, или вы даже можете превратить этот код в любой метод расширения в классе XmlNode , чтобы вы могли написать:

 Customer myCustomer = xmlNode.ConvertNode<Customer>();

Marc

24
ответ дан 3 December 2019 в 14:53
поделиться

Самый простой способ сделать это - использовать встроенный класс System.Xml.Serialization.XmlSerializer в .NET. Поиск в Google по XmlSerializer предоставит массу руководств, которые вы можете использовать, чтобы найти учебное пособие, которое подойдет вам.

-1
ответ дан 3 December 2019 в 14:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: