Может ли Servicetack десериализовать XML без пространств имен - PullRequest
0 голосов
/ 22 февраля 2019

Я знаком с этими двумя методами:

var newDataSet = XmlSerializer.DeserializeFromString<NEWDATASET>(xmlDoc.OuterXml);
var newDataSet = xmlDoc.OuterXml.FromXml<NEWDATASET>();

Но они оба выдают мне одну и ту же ошибку:

DeserializeDataContract: Ошибка типа преобразования: Ошибка в позиции строки 140. Ожидается элемент 'NEWDATASET' из пространства имен '' .. Обнаружен 'Элемент' с именем 'NEWDATASET', пространство имен ''.

Я чувствую, что должен быть способ заставить это работать какпри условии, что имена элементов либо совпадают с именами общедоступных свойств, либо для параметра DataMemberAttribute Name публичного свойства было задано имя элемента.

1 Ответ

0 голосов
/ 23 февраля 2019

ServiceStack не имеет своего собственного XML Serializer, он DataContractSerializer использует XML DataContract .NET, а XmlSerializer использует .NET XmlSerializer.Таким образом, полезная нагрузка XML должна быть десериализована из любой из этих реализаций BCL.

Альтернативный способ анализа произвольного XML - использование XLinq и ServiceStack XLinqExtensions , которые предоставляют UX-дружественные помощники для упрощенияСинтаксический анализ XML.

Вот несколько примеров синтаксического анализа произвольного XML с помощью XLinq и помощников:

...