使用带有嵌套导入的模式验证java中的XML
我正在尝试使用嵌套导入根据xsd模式验证XML字符串:使用带有嵌套导入的模式验证java中的XML,java,xml,xsd,xsd-validation,xerces,Java,Xml,Xsd,Xsd Validation,Xerces,我正在尝试使用嵌套导入根据xsd模式验证XML字符串: types.xsd implementationsV2.1.xsd ... geofencingServiceV2.1.xsd ... 具有以下验证代码: private void validateResponseSchema(字符串响应)抛出IOException、SAXException{ SchemaFactory factory=SchemaFactory.newInstance(xmlstants.W3C\u XML\
types.xsd
implementationsV2.1.xsd
...
geofencingServiceV2.1.xsd
...
具有以下验证代码:
private void validateResponseSchema(字符串响应)抛出IOException、SAXException{
SchemaFactory factory=SchemaFactory.newInstance(xmlstants.W3C\u XML\u SCHEMA\u NS\u URI);
Schema Schema=factory.newSchema(新类路径资源(“types.xsd”).getURL());
Validator Validator=schema.newValidator();
validator.validate(新的StreamSource(新的ByteArrayInputStream(response.getBytes()));
}
我得到了一个错误:
org.xml.sax.SAXParseException;systemId:file:/…/types.xsd;行号:358 ;;栏目号:87;src resolve.4.2:解析组件“gef:modeId”时出错。
检测到“gef:modeId”位于命名空间中”http://www.example.com/geofencing,但此命名空间中的组件不可从架构文档“file:/…/types.xsd”引用。
如果名称空间不正确,可能需要更改“gef:modeId”的前缀。如果这是正确的命名空间,则应在“file:/…/types.xsd”中添加适当的“import”标记。
如果我直接在types.xsd
中导入geofineering
名称空间,它可以工作,但我不明白为什么需要这样做
- 我在这里包括了一个名称空间,但在
实现中有几个名称空间
- 我无法轻松修改正在验证的XSD
- 通过调试,我可以确认链接文件已正确解析