2013-10-30 45 views
0

我正在創建一個XML驗證器,它將根據特定模式驗證XML。我正在使用OASIS模式來驗證針對該模式的斷言。下面是將模式傳遞給SchemaFactory並且架構對象已創建時使用xenc的模式:未導入EncryptedData元素,導入模式中存在xenc-schema.xsd「問題,同時驗證XSD格式良好的XML

當我創建的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()); 
} 

我正在尋求答覆。

+0

我使用綠洲架構的一部分,在共享//docs.oasis-open.org/security/saml/v2.0/saml-schema-assertion-2.0.xsd –

回答

0

似乎xenc命名空間沒有在您的XML文件中聲明,或者至少是整個元素xenc:EncryptedData。請發佈您的XML文件。我在您的XSD文件中看不到EncryptedData元素定義。 HTTP:

+0

喜請參閱下面的部分在xds: - - <屬性名= 「SPProvidedID」 類型= 「字符串」 使用= 「可選的」/> - <的complexType名稱= 「EncryptedElementType」> - <元件REF =「xenc:EncryptedData」/>

+1

@SushantSood您提供的鏈接不包含此信息。你能提供XML和XSD嗎? – logoff