Java XML验证

Java XML验证,java,schema,xml-validation,Java,Schema,Xml Validation,我想根据提供的RELAXNG模式验证XML文件。在网上搜索给了我一些提示,通过提供适当的模式语言,使用SchemaFactory创建一个模式实例。因此,根据我的要求,我使用了: SchemaFactory.newInstance(xmlstants.RELAXNG\u NS\u URI) 但在运行时引发了以下异常: 线程“main”java.lang.IllegalArgumentException中的异常:无法加载实现由指定的架构语言的SchemaFactory 位于javax.xml.val

我想根据提供的RELAXNG模式验证XML文件。在网上搜索给了我一些提示,通过提供适当的模式语言,使用SchemaFactory创建一个模式实例。因此,根据我的要求,我使用了:

SchemaFactory.newInstance(xmlstants.RELAXNG\u NS\u URI)

但在运行时引发了以下异常:

线程“main”java.lang.IllegalArgumentException中的异常:无法加载实现由指定的架构语言的SchemaFactory
位于javax.xml.validation.SchemaFactory.newInstance(SchemaFactory.java:207)

我使用的是Java6,并且观察到只有“W3C\uXML\uSchema\uNs\uURI”可以工作。Rest所有模式URI都会引发类似的异常

我对使用XML验证API相当陌生。如果我做得不对,有人能给我提供合适的用法吗

谢谢和问候,

KeyaRNG在javaapi中的支持很差,它从未真正得到支持。据我所知,没有Java API实现可以处理它。我建议将模式转换为XML模式(使用或类似),然后根据该模式进行验证。

RNG的支持不如XML模式广泛。您应该始终首先考虑使用XSD。

是Java语言;我想它有一个清晰的API可以使用,但我只在命令行和脚本中使用过它。

Kohsuke Kawaguchi显然为jaxp编写了一个适配器库来使用relaxng验证器,请参见,我已经成功地使用Java 6根据基于XML的relaxng模式验证了文档,请检查:


不知道是否相关,只是指出:-)。

您好,谢谢您的回复。我按照您的建议使用Trang将rng转换为xsd。但我运行它时出错了。以下是出现错误的命令:$java-jar trang.jar-I rng-O xsd config_schema.rng config_schema.xsd xml validation/trang-20081028/config_schema.rng:1:fatal:prolog中不允许包含内容。$您能就上述错误向我提供一些建议吗?请确保文件开头和架构定义开头之间并没有空格或注释。谢谢。除了空白,我还使用了.rng扩展名而不是.rnc。但是,使用正确的扩展将RNG模式转换为XSD.RNG要容易得多。在RNG中编写然后稍后转换为XSD是一个有效的概念