java - 在带有导入的Java中,验证解析模式?

  显示原文与译文双语对照的内容
76 3

在Java中,我试图解析相当复杂的XML Schema 到模式对象中,这样我就可以对XML消息进行一些验证。

我的代码与下面的代码类似:

SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(new StreamSource(new File("schema/schema.xsd")));

我的架构有相当多的导入:

<?xml version="1.0" encoding="UTF-8"?>
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="base_1">
 <xs:import namespace="base_1" schemaLocation="common/MessageBase.xsd"/>
</xs:schema>

。当我试图加载模式时,我得到了很多错误。基于它的他问题,我需要指定一个资源解析器,但是这不应该被默认处理。

如果是,是否有一个特定的目录,我需要将模式放在运行我所写的应用程序或者基础架构文件。

finally,当我加载with或者类似的模式时,它运行得很好,并且我可以以验证XML实例。

时间:原作者:0个回答

53 2

我认为在不指定基础位置的情况下使用StreamSource是你的问题的根源。

解析器无法知道主模式的位置,因这里它无法解析公共/MessageBase 。xml 。

使用两个参数构造函数并传入一个 SystemID,它是你从。

查看StreamSource的javadoc 。

原作者:
...