是否可以逐部分验证大型xml?
例如
<retail>
<pdt>
</pdt>
<pdt>
</pdt>
<pdt>
</pdt>
</retail>
将其视为一个大型 xml 文件。我需要针对 xsd 进行验证,即使任何一个 pdt 成功验证,我的验证器也应该返回 true,并且还应该给出其他失败的原因。
是否可以逐部分验证大型xml?
例如
<retail>
<pdt>
</pdt>
<pdt>
</pdt>
<pdt>
</pdt>
</retail>
将其视为一个大型 xml 文件。我需要针对 xsd 进行验证,即使任何一个 pdt 成功验证,我的验证器也应该返回 true,并且还应该给出其他失败的原因。
JAXP validate() 方法接受 Source,因此您应该能够提供包装 pdt 元素节点的 DOMSource。但是,这假定架构包含元素 pdt 的全局元素声明。
首先参考Java 中的这个 XML 验证。对于您的要求“需要针对 xsd 进行验证,即使任何一个 pdt 已成功验证,我的验证器也应返回 true,并且还应说明其他人失败的原因”
通过实现 org.xml.sax.ErrorHandler 接口创建一个自定义 ErrorHandler,然后在给定示例中将其注册为错误处理程序,如下所示:
validator.setErrorHandler(new CustomValidationErrorHandler());
确保在调用 validate() 方法之前执行此操作。在您的 CustomErrorHandler 中,您可以记录在验证时将获得的异常,以查看您的 xml 有什么问题,如果您想继续验证,请不要抛出该异常。当你开始实施它时,你会得到它。