Java 使用StAX进行xml验证:无法识别的属性';isInterning';

Java 使用StAX进行xml验证:无法识别的属性';isInterning';,java,xml,validation,jboss,Java,Xml,Validation,Jboss,我正试图让xml验证与我们的jboss webapp配合使用。我已经阅读并遵循了这个例子。然后我看到了以下例外情况: 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.v

我正试图让xml验证与我们的jboss webapp配合使用。我已经阅读并遵循了这个例子。然后我看到了以下例外情况:

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)
根据,这里的问题是JBoss5.0.1有一个旧版本的xerces。因此,我通过替换jboss-5.0.1.GA/lib/annowed/下现有的xercesImpl.jar将其升级到2.11.0。由于以下错误,jboss将无法启动:

NoClassDefFoundError: org/w3c/dom/ElementTraversal
根据,在较新版本的xerces中,这些类被拆分为一个单独的jar文件:xml-api.jar。我从中获取了该文件的最新版本(1.4.01,日期为2009年12月),并将其添加到
jboss-5.0.1.GA//lib/annowed/
——现在jboss启动正常了

到目前为止还不错

但是现在,当我尝试调用
javax.xml.validation.Validator.Validator()方法时,我看到了以下错误:

java.lang.IllegalArgumentException: Unrecognized property 'javax.xml.stream.isInterning'
似乎不存在与该财产相关的任何问题。我肯定不是唯一一个尝试在JBoss5上使用StAX进行xml验证的人

还是我做错了什么

代码段:

 Validator validator = requestSchema.newValidator();  
 StAXSource source = new StAXSource(xmlsr);  //an XMLStreamReader
 validator.validate(source); 

我们找到了两种解决这个问题的方法

一个选项是将XmlStreamReader精简地包装在一个新类中,如果参数是
“javax.xml.stream.isInterning”
,则该类将忽略
getProperty
调用,否则将委托它


另一种选择是使用XmlEventReader,它性能较差,但不需要自定义包装器即可工作。

从其要点来看,如果我没有弄错的话,您使用的库有一个过时版本的javax.xml.stream.XMLStreamReader,它没有“isinterning”属性。希望这有点帮助,因为我真的不知道是哪个jar将这个类带到了您的特定案例中。。。