繁体   English   中英

针对XSD验证多个XML文件的最佳方法是什么?

[英]What is the best way to validate multiple XML files against a XSD?

我正在一个需要针对其XSD验证许多XML文件的项目,我遇到的麻烦是,许多XSD文件都依赖于其他XSD ,这使得通常的验证有点麻烦,是否有一种优雅的解决方法这个问题?

如果可能的话,我希望使用内存中的那些文件,这些文件的目录结构不符合其导入路径。

请注意,我正在使用Java语言。

假设您使用的是JAXP,则可以在SAXParserFactory或DocumentBuilderFactory上setSchema()

我参与其中的一种解决方案是使用SchemaFactory.newSchema(Source[] schemas)将所有XSD源读取到聚合的Schema对象中。 然后,该聚合的模式能够验证引用任何“顶部”模式的任何XML文档。 所有imported架构都必须是聚合架构的一部分。 我记得,有必要按依赖关系对Source数组进行排序,这样,如果Schema A导入了Schema B,则Schema B必须在数组中的Schema A之前发生。

另外,正如我记得的那样, <include>在这种机制下不能很好地工作。

另一个解决方案是在ShemaFactory上设置LSResourceResolver 您将必须实现自己的LSResourceresolver ,它根据解析器的输入来提供字节流或字符流。 我尚未亲自使用或研究此解决方案。

第一个解决方案当然具有这样的好处,即模式解析和处理可以一次完成,并可以重复用于随后的所有验证。 第二种选择可能很难实现。

要记住的另一件事(取决于您的上下文):从性能和安全性角度来看,控制整个“解析”过程(即控制解析器如何访问外部资源)是一个不错的设计选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM