我正在尝试使用StAX在我们的jboss webapp中使用xml验证。我读过this post并遵循了这个例子。然后我看到以下异常:使用StAX进行xml验证:无法识别的属性'javax.xml.stream.isInterning'
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获取该文件的最新版本(2009年12月的1.4.01),并将其添加到jboss-5.0.1.GA//lib/endorsed/
- 现在jboss开始正常工作。
到目前为止这么好。
但现在我看到下面的错误,当我尝试调用javax.xml.validation.Validator.validate()
方法:
java.lang.IllegalArgumentException: Unrecognized property 'javax.xml.stream.isInterning'
人们似乎对所以没有存在的问题是指该属性。当然,我不能成为唯一一个在jboss 5上使用StAX进行xml验证的人!
或者我在做什么明显错误?
代码片段:
Validator validator = requestSchema.newValidator();
StAXSource source = new StAXSource(xmlsr); //an XMLStreamReader
validator.validate(source);
从它的要点,如果我没有弄错你正在使用的库有一个 javax.xml.stream.XMLStreamReader没有属性“isinterning”的废弃版本。希望这会有所帮助,因为我真的不知道哪个jar会将这个类引入到您的具体情况中。 – witchedwiz 2015-06-14 18:49:24