Validation 根据XML模式验证java.util.Map(没有XML文档,只有映射对象)

Validation 根据XML模式验证java.util.Map(没有XML文档,只有映射对象),validation,xsd,map,Validation,Xsd,Map,这可能是一个奇怪的问题,但最近我想到了一些类似于验证具有xsd的键值对的映射对象的事情。我的意思是,如果xsd在某个根元素下有两个元素,如foo和bar,并且映射包含键-值对,如foo=“me”和bar=123,那么我应该能够根据相应的xsd验证该映射,而无需将映射转换为xml/json或任何类似模型的东西。我做了一些搜索,但找不到任何支持此功能的api。我还研究了javax.xml.validation api,但我无法弄清楚验证器究竟是如何根据xsd验证xml的。如果我能从xsd中获得每个元

这可能是一个奇怪的问题,但最近我想到了一些类似于验证具有xsd的键值对的映射对象的事情。我的意思是,如果xsd在某个根元素下有两个元素,如foo和bar,并且映射包含键-值对,如foo=“me”和bar=123,那么我应该能够根据相应的xsd验证该映射,而无需将映射转换为xml/json或任何类似模型的东西。我做了一些搜索,但找不到任何支持此功能的api。我还研究了javax.xml.validation api,但我无法弄清楚验证器究竟是如何根据xsd验证xml的。如果我能从xsd中获得每个元素的属性,那么也许我就能验证映射。请给我一些关于这方面的信息,欢迎任何建议。

这是一个有趣的问题。我可以想象一个通过处理SAX事件工作的验证器;您可以想象根据地图中的数据发送这些事件。这是一种可以使用第三方验证器的机制。据我所知,没有任何验证器是这样工作的;这将是一个包含嵌套子映射的映射,是吗?可能是的,但如果我可以从xml模式中提取每个元素(包括复杂类型)的属性,然后使用它来验证映射中存在的元素;一点也不像。您能详细解释一下SAX事件吗?它可能会帮助我实现这一点。“SAX解析器”读取XML文档并生成一系列事件(即调用一系列方法)来描述文档。你实施这些方法来做一些事情;我在想象一个验证器,它实现了验证文档的方法。在Java中,可以通过扩展org.xml.sax.helpers.DefaultHandler来实现这些方法。例如,请参见: