Я работаю с устаревшей системой (а не с моим дизайном), и у нее есть некоторые данные, которые сохраняются в db как сериализованный xml (SOAP).Разбор SOAP XML с XDocument
XML был создан с помощью SoapFormatter.
SoapFormatter formatter = new SoapFormatter();
formatter.Serialize(stream, o);
Я не могу просто десериализовать из SOAP из-за проблемы с версией. Модель, из которой были созданы данные, изменилась, и десериализация сохраняемых данных (в xml) невозможна. Поэтому я пытаюсь выяснить, как вручную «десериализовать» старый SOAP для существующей модели.
Я могу загрузить его в XDocument, а затем извлечь значения узлов с помощью LINQ. Но у меня проблема с значениями Guid. Они хранятся в SOAP XML следующим образом:
<someId xsi:type="a2:Guid" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
<_a>1396006029</_a>
<_b>2720</_b>
<_c>20328</_c>
<_d>162</_d>
<_e>217</_e>
<_f>181</_f>
<_g>57</_g>
<_h>113</_h>
<_i>92</_i>
<_j>64</_j>
<_k>35</_k>
</someId>
Есть ли способ сделать это безболезненным?
Я могу читать их один за другим, как это:
var someId = xdoc.Descendants(ns + "root").Elements("someId").Elements("_a").Value;
и попытаться разобрать на Guid, но это не выглядит хорошо.
Спасибо,
Майк