私は現在、デフォルトの JAXB バインディングの代わりに XMLBeans バインディングを使用した 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)
上記のエラー メッセージから、実行時に DOM レベル 3 API が見つからないため、getTextContent メソッドが例外を引き起こしていることは明らかです。このエラーを解消するにはどうすればよいですか? jdk に付属するデフォルトの DOM API が代わりに使用されるように、どの jar に DOM API が含まれているかを特定し、その jar からすべての dom 関連クラスを削除する必要があると思います。または、getTextContent メソッドに依存せずに DOM を使用して xml タグのテキスト コンテンツを取得する方法はありますか?