2

私はJavaに非常に慣れていないので、これが簡単な質問であることを願っています。

XMLファイルを読み込んで解析しようとしています。私はいくつかのチュートリアルに従いました、そしてそれらのすべてはこの行を示しています(さまざまな変数名で、しかし-同じ概念):

Element eElement = (Element) nNode;

この行に到達して実行するとすぐに、アプリがクラッシュします。ノードアイテムを取得して要素に変換することになっていると思います。

System.out.println("Root element :" + myDoc.getDocumentElement().getNodeName());
NodeList nList = myDoc.getElementsByTagName("title");
System.out.println("----------------------");

for(int temp = 0; temp < nList.getLength(); temp++) {

    Node nNode = nList.item(temp);
    if(nNode.getNodeType() == Node.ELEMENT_NODE) {

        Element eElement = (Element) nNode;

    }
}

LogCat:

05-03 02:12:20.865: I/System.out(9424): Root element :rss
05-03 02:12:20.865: I/System.out(9424): ----------------------
05-03 02:12:20.875: W/System.err(9424): java.lang.ClassCastException: org.apache.harmony.xml.dom.ElementImpl
05-03 02:12:20.875: W/System.err(9424):     at com.sltrib.test.Main.onCreate(Main.java:68)
05-03 02:12:20.875: W/System.err(9424):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-03 02:12:20.875: W/System.err(9424):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
05-03 02:12:20.875: W/System.err(9424):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
05-03 02:12:20.875: W/System.err(9424):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
05-03 02:12:20.875: W/System.err(9424):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
05-03 02:12:20.875: W/System.err(9424):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-03 02:12:20.875: W/System.err(9424):     at android.os.Looper.loop(Looper.java:123)
05-03 02:12:20.875: W/System.err(9424):     at android.app.ActivityThread.main(ActivityThread.java:3683)
05-03 02:12:20.875: W/System.err(9424):     at java.lang.reflect.Method.invokeNative(Native Method)
05-03 02:12:20.875: W/System.err(9424):     at java.lang.reflect.Method.invoke(Method.java:507)
05-03 02:12:20.875: W/System.err(9424):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
05-03 02:12:20.875: W/System.err(9424):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
05-03 02:12:20.875: W/System.err(9424):     at dalvik.system.NativeStart.main(Native Method)
4

2 に答える 2

3

Elementクラスをインポートしたと思いますが、別のパッケージからインポートしました(つまりorg.w3c.dom.Element、ではなく、別のパッケージのElementという名前の別のクラス)。

インポートステートメントを確認してください。

例外の原因となる命令はキャストであることに注意してください。キャストされたオブジェクトは変換されません。代わりに、Node型のオブジェクトへの参照を取り、Element型の参照にします。キャストされたオブジェクトは、この操作の影響を受けません。また、オブジェクトが実際にElement型である場合にのみ、操作は成功します。

于 2012-05-07T16:06:02.743 に答える
0

あなたはnNode.getClass().getName()それがどんなタイプのオブジェクトであるかを見つけるために行うことができます。if(nNode instanceof Element)最善の解決策ではありませんが、実行することもできます。

于 2012-05-07T16:13:35.323 に答える