ElementNSImpl 类型的对象作为 com.sun.org.apache.xerces.internal.dom.ElementNSImpl

Object of type ElementNSImpl coming as com.sun.org.apache.xerces.internal.dom.ElementNSImpl

所以我部署在 JDK1.8.0_161 环境中的 WS-Trust 服务器需要一个包含 xml 个 org.apache.xerces.dom.ElementNSImpl 类型节点的请求,但是当请求来了,节点的类型为 com.sun.org.apache.xerces.internal.dom.ElementNSImpl,这并没有让我无法从请求中读取数据。我正在使用 xerces:xercesImpl:2.11.0 库,但想知道 JDK 是否搞乱了服务器端的请求解析。目前我只看到 rt.jar 包含 com.sun.org.apache.xerces.internal.dom.ElementNSImpl。我错过了什么?有人见过这个错误吗?

我通过使用 Element 作为接口而不是使用实现 ElementNSImpl 解决了这个问题。这将使实施环境独立。

所以代码看起来像这样

if(object instanceof org.w3c.dom.Element)

而不是

if(object instanceof ElementNSImpl)