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

问题描述 投票:0回答:2

因此,我部署在 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
。我缺少什么?有人见过这个错误吗?

java xml soap ws-trust
2个回答
7
投票

我通过使用

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

所以代码看起来像这样

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

而不是

if(object instanceof ElementNSImpl)

0
投票

同样的问题,但我将对象投射到 java 21 的 org.w3c.dom.Node 中。

switch (object) {
case Node   node -> node.getFirstChild().getNodeValue();
case String str  -> str;
default          -> throw new IllegalStateException("Unexpected value");})
© www.soinside.com 2019 - 2024. All rights reserved.