相关疑难解决方法(0)

使用 dom4j DOMDocument 来提供 validator.validate(DOMSource) 在 java 1.6 中失败(xsi:noNamespaceSchemaLocation 是不允许的),在 1.5 中有效

使用 dom4j DOMDocument 来提供 validator.validate(DOMSource) 在 java 1.6 中失败(xsi:noNamespaceSchemaLocation 不允许出现在根元素中),在 1.5 中有效

我发现以下问题非常棘手(好吧,这是轻描淡写) - 任何见解将不胜感激。目前似乎最好的主意是放弃 dom4j 以支持 XOM(http://stackoverflow.com/questions/831865/what-java-xml-library-do-you-recommend-to-replace-dom4j)。

我一直在验证从 dom4j 'new DOMDocument()' 创建的内存 XML - 但这不适用于 Java 6。

以下对 dom4j (1.6.1) DOMDocument 派生的 DOMSource 的 validate(source) 调用适用于 Java 1.5.x,但在 Java 1.6.x 中失败:

public void validate() throws Exception {
    SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
    schemaFactory.setErrorHandler(null);
    Schema schemaXSD = schemaFactory.newSchema(new URL(getSchemaURLString()));
    Validator validator = schemaXSD.newValidator();
    DOMSource source = new DOMSource(getDocument());
    validator.validate(source);
}
Run Code Online (Sandbox Code Playgroud)

getSchemaURLString() 也用于在根节点添加 xsi:noNamespaceSchemaLocation 属性,即: xsi:noNamespaceSchemaLocation="http://localhost:8080/integration/xsd/fqlResponseSchema-2.0.xsd"

异常如下:

Exception:  org.xml.sax.SAXParseException: cvc-complex-type.3.2.2: Attribute 'xsi:noNamespaceSchemaLocation' …
Run Code Online (Sandbox Code Playgroud)

xsd dom4j saxparseexception java-6

5
推荐指数
1
解决办法
4019
查看次数

标签 统计

dom4j ×1

java-6 ×1

saxparseexception ×1

xsd ×1