我想根据这个模式(在 zip 里面)验证 XML 文件;它导入另外两个 XSD 文件。
<import namespace="http://www.w3.org/2000/09/xmldsig#"
schemaLocation="xmldsig-core-schema.xsd"/>
<import namespace="http://www.w3.org/2001/04/xmlenc#"
schemaLocation="xenc-schema.xsd"/>
这 2 个文件也可在此处获得:
- http://www.forum-datenaustausch.ch/xmldsig-core-schema.zip
- http://www.forum-datenaustausch.ch/xenc-schema.zip。
在验证时,我收到此错误:
Src-resolve: Cannot Resolve The Name 'xenc:EncryptedData' To A(n) 'element Declaration' Component.
我的验证/解组代码如下所示(使用 moxy 作为 JAXB 提供程序):
jaxbContext = JAXBContext.newInstance(type.getRequestType().getPackage().getName());
Unmarshaller um = jaxbContext.createUnmarshaller();
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = sf.newSchema(new StreamSource(this.getClass().getResourceAsStream("/xsd/" + type.getXsdName())));
um.setSchema(schema);
root = um.unmarshal(new StreamSource(new ByteArrayInputStream(xmlData)), type.getRequestType());
在你问类型做什么之前:我编写的代码可以从http://www.forum-datenaustausch.ch/导入所有类型的发票。但是 4.3 及更高版本使用两个附加的模式文件。如何验证 XML 文件?