在针对XSD验证格式良好的XML时发出问题

时间:2013-10-30 08:36:28

标签: java xml xsd xsd-validation

我正在创建一个XML验证器,它将根据特定模式验证XML。我目前正在使用OASIS模式来验证针对该模式的断言。下面是模式,当它传递给SchemaFactory并创建模式对象然后xenc:EncryptedData元素未解析,导入的模式中存在xenc-schema.xsd“< / p>

当我创建一个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());
}

我正在寻找答案。

1 个答案:

答案 0 :(得分:0)

似乎xenc命名空间未在XML文件中声明,或者至少在整个元素xenc:EncryptedData中声明。请发布您的XML文件。我在XSD文件中看不到EncryptedData元素定义。

相关问题