我有一个要求,即XML有效负载在一个信封内传递,其中有效负载被定义为org.w3c.dom.Element。
每个有效负载需要根据它的模式进行验证(大约有40个),其中许多都有导入到其他模式。
附加的代码目前已经验证,但我确信它只会再次验证生成的模式(XMLDocument),并且它已经很好地形成,它会通过验证。
我已经看到了如何针对特定模式进行验证的示例 - 但直到解析时,我才知道有效负载的Document子类是什么。
非常感谢您的建议......
JAXBContext jaxbContext = JAXBContext.newInstance();
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
QName qName = new QName("");
JAXBElement<Object> rootElement = new JAXBElement<Object>(qName, Object.class, message.getPayload());
JAXBSource theXML = new JAXBSource(jaxbContext, rootElement);
SchemaFactory schemaFactory = Schema.Factory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema();
jaxbUnmarshaller.setSchema(schema);
Validator validator = schema.newValidator();
validator.setErrorHandler(new CustomValidationErrorHandler());
validator.validate(theXML);
答案 0 :(得分:0)
基于来自其他地方的一些反馈,我通过SAX或DOM路由解析它,并让解析器通过使用解析器的自发现机制来查找文档的XSD来确定它是否有效。