使用StAX进行xml验证:无法识别的属性’javax.xml.stream.isInte
我正在尝试使用Staxin我们的jboss webapp进行xml验证.我已阅读
this post并按照示例进行操作.然后我看到以下异常:
java.lang.IllegalArgumentException: Source parameter of type javax.xml.transform.stax.StAXSource' is not accepted by this validator. at org.apache.xerces.jaxp.validation.ValidatorImpl.validate(Unknown Source) 根据this post,这里的问题是jboss 5.0.1有一个旧版本的xerces.所以我通过替换jboss-5.0.1.GA/lib/endorsed/下的现有xercesImpl.jar将其升级到2.11.0.然后jboss将无法启动,因为以下错误: NoClassDefFoundError: org/w3c/dom/ElementTraversal 根据this post,在较新版本的xerces中,类已被拆分为单独的jar文件:xml-apis.jar.我从the xerces homepage获取了该文件的最新版本(1.9.01,2009年12月),并将其添加到jboss-5.0.1.GA //lib/endorsed/ – 现在jboss开始正常. 到现在为止还挺好. 但是,当我尝试调用javax.xml.validation.Validator.validate()方法时,我现在看到以下错误: java.lang.IllegalArgumentException: Unrecognized property 'javax.xml.stream.isInterning' 似乎SO上没有存在涉及该属性的问题.当然,我不能成为唯一一个尝试在jboss 5上使用StAX进行xml验证的人? 或者我做了明显错误的事情? 代码段: Validator validator = requestSchema.newValidator(); StAXSource source = new StAXSource(xmlsr); //an XMLStreamReader validator.validate(source);
我们找到了解决这个问题的两种方案
一种选择是将XmlStreamReader精简地包装在一个新类中,如果参数是“javax.xml.stream.isInterning”,它将忽略getProperty调用,否则委托它. 另一种选择是使用XmlEventReader,它性能较差,但无需自定义包装. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |