我使用 SDK 中的 xsd.exe 工具基于 XSD 生成了 C# 类。然后,我可以使用该类通过 XmlSerializer [反]序列化对象...但是,序列化程序似乎非常宽容。
我是否可以让序列化程序在缺少属性或"奇怪"XML节点的情况下引发异常?
我认为一种方法是修改属性的设置器并使其验证数据(或使用 XSD 验证(......但是,还有其他替代解决方案吗?
您可以实现 IXmlSerializable
接口,并在 ReadXml
方法实现中检查所需的特定元素,在找不到它们时引发异常(或设置您需要的任何通知(。
如果要使用架构进行验证(例如,使用 minOccurs
和 maxOccurs
架构属性(,则可以通过将传递给 Create
方法的 XmlReaderSettings
类上的 Schemas
属性来配置XmlReader
实例以针对架构进行验证(请注意,存在需要TextReader
Create
重载, 等(。