提问人:anonyme 提问时间:8/19/2023 更新时间:8/20/2023 访问量:196
如何使用具有导入的 XSD 的 Java 11 验证 XML 文件?
How to validate an XML file using Java 11 with an XSD having an import?
问:
我有一个带有 Spring Boot 2.7 的 Java 11 应用程序。我需要使用 XSD 文件验证 XML 文件。这些XSD文件包含像<xs:import schemaLocation=“core-schema.xsd”>这样的导入,并且core-schema.xsd文件位于导入它的XSD文件旁边。我的应用程序作为 JAR 文件部署在容器中,XSD 文件位于“resources”目录中。这意味着如果不使用 InputStream,我无法直接在代码中访问它们。
为了进行验证,我使用以下代码:
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
final Schema schema = sf.newSchema(monXSDFile);
final Validator validator = schema.newValidator();
final StringReader reader = new StringReader(content);
validator.validate(new StreamSource(reader));
现在,我正在尝试在 sf.newSchema() 方法中使用 XSD 文件的 InputStream,同时仍然允许访问导入的“core-schema.xsd”文件。
我尝试使用以下代码:
final Schema schema = sf.newSchema(new Source[] {
new StreamSource(xsdFile),
new StreamSource(coreSchemaFile)
});
但是,这并没有按预期工作。我怎样才能修改我的方法来实现这个目标? 谢谢
答:
0赞
Ionathan Ardelean
8/20/2023
#1
可以通过两种方式针对 XSD 验证 XML:
- 使用 jaxb maven 插件。请看这里: https://howtodoinjava.com/jaxb/xsd-schema-validation/
- 使用 javax.xml.validation.Validator:请看这里:https://www.digitalocean.com/community/tutorials/how-to-validate-xml-against-xsd-in-java
我更喜欢使用 jaxb maven 插件。
评论