gpt4 book ai didi

java - 根据 XSD 验证多个 XML 文件的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-02 11:18:37 33 4
gpt4 key购买 nike

我正在开发一个项目,需要根据其 XSD 验证许多 XML 文件,我遇到的问题是许多 XSD 文件依赖于其他 XSD,这使得通常的验证变得很困难麻烦,有没有优雅的方法来解决这个问题?

如果可能的话,我希望在内存中使用这些文件,这些文件并不位于与其导入路径相符的简洁目录结构中。

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

最佳答案

假设您使用 JAXP,这样您就可以 setSchema()SAXParserFactory 上或`DocumentBuilderFactory。

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

此外,我记得,<include>这种机制不能很好地工作。

另一个解决方案是设置 LSResourceResolver在 ShemaFactory 上。您必须实现自己的 LSResourceresolver根据解析器的输入提供字节流或字符流。我个人没有使用或研究过这个解决方案。

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

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

关于java - 根据 XSD 验证多个 XML 文件的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50083197/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com