如何解决自定义消息错误:消息由于XML验证错误而被拒绝;嵌套异常为
我正在读取针对xsd文件验证过的XML文件。如果存在验证错误,则工作流将在IntegrationContextUtils.ERROR_CHANNEL_BEAN_NAME通道中列出。我收到错误消息。该企业对默认消息不满意(请参阅下文)。现在,我解析结果以仅显示相关信息。有什么方法可以只访问给出不正确或缺少xml标记的子字符串?
由于XML验证错误,邮件被拒绝;嵌套的异常是org.springframework.integration.xml.AggregatedXmlMessageValidationException:多种原因: cvc-datatype-valid.1.2.1:“ 1900”不是“日期”的有效值。 cvc-type.3.1.3:元素“ BirthDate”的值“ 1900”无效。
@Bean
public MessageFilter validatexml() throws IOException,AggregatedXmlMessageValidationException {
XmlValidatingMessageSelector validate_xsd = new XmlValidatingMessageSelector(myfile.xsd,XmlValidatingMessageSelector.SchemaType.XML_SCHEMA);
validate_xsd.setThrowExceptionOnRejection(true);
return new MessageFilter(validate_xsd);
}
@Bean
public IntegrationFlow processFileFlowLocal() throws IOException,AggregatedXmlMessageValidationException {
return IntegrationFlows.from("inputChannel")
.handle(validatexml())
.transform(new UnmarshallingTransformer(jaxbMarshaller()))
.handle("payloadTransformer","myObject")
.transform(new ObjectToJsonTransformer())
.handle(httpGateway())
.handle("responseProcess","process")
.get();
}
@Bean
public IntegrationFlow errorFlow() {
return IntegrationFlows.from(IntegrationContextUtils.ERROR_CHANNEL_BEAN_NAME)
.handle(handleMessage())
.get();
}
Thank you.
解决方法
不确定您的要求是什么,但是您绝对可以查看AggregatedXmlMessageValidationException
并使用其List<Throwable> getExceptions()
来单独访问所有错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。