我目前正在开发一个使用 XMLBeans 绑定而不是默认 JAXB 绑定的 Apache CXF Web 服务。我正在使用 Java 1.6 编译和运行代码。对于以下代码片段,我在运行时收到“DOM 级别 3 未实现”错误:
ExtType[] extTypeList = p.getExtArray();
for (ExtType extType : extTypeList) {
Node node = extType.getDomNode();
NodeList objList = node.getChildNodes();
for (int i = 0; i < objList.getLength(); ++i) {
Node text = (Node) objList.item(i);
if (text.getNodeName() != null
&& text.getNodeName() == XmlConstant.NODE_NAME) {
info.setDuration(text
.getTextContent());
}
}
}
JBoss 中显示的确切错误如下:
java.lang.RuntimeException: DOM Level 3 Not implemented
at org.apache.xmlbeans.impl.store.DomImpl._node_getTextContent(DomImpl.java:2516)
at org.apache.xmlbeans.impl.store.Xobj$NodeXobj.getTextContent(Xobj.java:2607)
从上面的错误消息中,很明显 getTextContent 方法导致了异常,因为在运行时找不到 DOM 级别 3 API。如何消除此错误?我猜我必须弄清楚哪个 jar 包含 DOM API,并从该 jar 中删除所有与 dom 相关的类,以便使用 jdk 附带的默认 DOM API。或者,有没有办法在不依赖 getTextContent 方法的情况下使用 DOM 获取 xml 标签的文本内容?