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



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

我是否可以让序列化程序在缺少属性或"奇怪"XML节点的情况下引发异常?

我认为一种方法是修改属性的设置器并使其验证数据(或使用 XSD 验证(......但是,还有其他替代解决方案吗?

您可以实现 IXmlSerializable 接口,并在 ReadXml 方法实现中检查所需的特定元素,在找不到它们时引发异常(或设置您需要的任何通知(。

如果要使用架构进行验证(例如,使用 minOccursmaxOccurs 架构属性(,则可以通过将传递给 Create 方法的 XmlReaderSettings 类上的 Schemas 属性来配置XmlReader实例以针对架构进行验证(请注意,存在需要TextReader Create重载, 等(。

最新更新