我正在创建一个 XML 验证器,它将针对特定模式验证 XML。我目前正在使用 OASIS 模式来验证针对该模式的断言。以下是模式传递给 SchemaFactory 并创建模式对象然后 xenc:EncryptedData 元素未解析,该元素存在于导入的模式 xenc-schema.xsd"
当我创建 SchemaFactory 的实例并尝试加载架构时,它无法找到在上述架构中导入的架构:
XML is not valid because
src-resolve: Cannot resolve the name 'xenc:EncryptedData' to a(n) 'element declaration' component.
创建模式对象时,如何在 SchemaFactory 上解析导入的模式应该能够找到导入的模式?以下是我正在编写的代码:
...
System.out.println("Executing the value");
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Source schemaFile = new StreamSource(new File("D:\\saml-schema-assertion- 2.0.xsd"));
Schema schema = sf.newSchema(schemaFile);
Validator validator = schema.newValidator();
validator.setErrorHandler(new SAMLErrorHandler());
validator.validate(new StreamSource(new File("D:\\Saml.xml")));
System.out.println("XML is valid");
} catch (IOException ex) {
} catch (SAXException e) {
System.out.println("XML is not valid because ");
System.out.println(e.getMessage());
}
我正在寻找答案。