更严格的XmlSerializer,它不允许未使用的节点

时间:2012-07-25 16:02:36

标签: c# xml strict serializer

我使用SDK中的xsd.exe工具基于XSD生成了C#类。然后我可以使用该类来使用XmlSerializer [de]序列化对象......但序列化程序似乎非常宽容。

如果缺少属性或“奇怪的”XML节点,是否有可能使序列化程序抛出异常?

我认为一种方法是修改属性的setter并使其验证数据(或使用XSD验证)......但是,对于这个问题还有其他替代解决方案吗?

1 个答案:

答案 0 :(得分:2)

您可以实现IXmlSerializable interface并在ReadXml method实现中检查您需要的特定元素,在找不到它们时抛出异常(或设置您需要的任何通知)。

如果要使用模式进行验证(例如,使用minOccurs and maxOccurs schema attributes),则可以通过设置XmlReader来配置Schemas property实例以针对模式进行验证在您传递给XmlReaderSettings classCreate method上(请注意,Create的重载会占用TextReader等。)