我想避免在我的json请求/响应中使用属性前缀,例如" @"。很容易配置MOXy不使用它们,但是在启用模式验证时会导致模式验证错误。
当你删除属性前缀时,它会尝试验证它,就好像它是一个元素,而不是一个属性,导致一个" cvc-complex-type.2.4.a:无效的内容是从元素XXX开始......"验证错误。
作为一个简短的例子,如果你有一个描述这样一个文档的模式:
<foo attr1="bar"/>
如果不使用属性前缀,json将如下所示:
{
"foo":
{
"attr1" : "bar"
}
}
但是当针对模式进行验证时,该文档将失败并使用&#34; cvc-complex-type.2.4.a:从元素 attr1 开始找到无效内容...&# 34;验证错误,因为它没有作为属性加前缀,MOXy似乎将它标识为一个元素(我相信这是通过ContentHandler.startElement()调用来触发元素的启动以及验证)。
有没有办法成功使用JSON文档的模式验证而不使用属性前缀?