因此,我部署在 JDK1.8.0_161 环境上的 WS-Trust 服务器正在等待一个包含
org.apache.xerces.dom.ElementNSImpl
类型的 xml 节点的请求,但是当请求到来时,节点的类型为 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)
同样的问题,但我将对象投射到 java 21 的 org.w3c.dom.Node 中。
switch (object) {
case Node node -> node.getFirstChild().getNodeValue();
case String str -> str;
default -> throw new IllegalStateException("Unexpected value");})