Как я могу сделать XmlSerializer.Deserialize более строгим? - PullRequest
0 голосов
/ 28 октября 2009

У меня есть несколько очень похожих XML-структур, которые на самом деле весьма различны, но кажется, что XmlSerializer.Deserialize очень «прощающий» и сделает все возможное, чтобы взять XML и десериализовать в строго типизированный объект, который я создал исходные XSD. Есть ли способ сделать его более строгим или провести более глубокую проверку?

// Locals
var serializer = new XmlSerializer(typeof(SomeCustomType));

// Set
var someInstance = serializer.Deserialize(new StringReader(xmlString.ToString()))

@ Jeff Поскольку корневые узлы похожи, он десериализуется в совершенно разные объекты. Представьте, что у вас есть дом, машина и лодка, и все они имеют общий корневой узел, называемый предметом, с несколькими атрибутами. Несмотря на то, что подузлы недействительны и не разделены, кажется, что это упускает из виду и прощает.

@ Я не хочу проверять XSD. Я хочу как-то заставить Deserializer видеть, что данные, которые он имеет, не должны быть подставлены в неправильный тип объекта.

Ответы [ 2 ]

0 голосов
/ 03 ноября 2009

Однажды я использовал проверяющий ридер для проверки XML по схеме, когда я читал его в десериализаторе.

0 голосов
/ 03 ноября 2009

Проблема заключалась в том, что ввод XML был неверным.

...