Android 環境で一部の XML ファイルの解析に問題があります... Android アプリを起動した後、JAVA 環境で XML を解析するテストを行いました。
だから、私はこのコードを書きました:
private void addMeta(Node n){
String[] fields = {"src", "timestamp", "title", "kind", "ref", "crcData"};
Element e = (Element)n.getChildNodes();
//... more code
}
しかし、これを Android で使用すると、ClassCastException が返されます。
問題を見つけるために調べていましたが、(理解できるように)問題は次のとおりです。
Android は、別の種類の「NodeList」(「n.getChildNodes()」によって返されるデータ型)を取得しています。Android が取得しているデータ型は、org.apache.harmony.xml.dom.NodeListImpl です。
それで、それを見て、コードを直接キャストからメソッドに変更しました。コードは次のとおりです。
private org.w3c.dom.Element getElements(Node n){
org.w3c.dom.NodeList nl = (org.w3c.dom.NodeList)n.getChildNodes();
return (org.w3c.dom.Element)nl;
}
次に、「Element e = (Element)n.getChildNodes()」を「org.w3c.dom.Element e = this.getElements(n)」に変更します。
しかし、「getElements」メソッドの内部で、奇妙なことが起こります...
「nl」は引き続き「org.apache.harmony.xml.dom.NodeListImpl」として取得されるため、ClassCastException が引き続き発生します。
それで、「org.apache ...」NodeListの代わりに「org.w3c.dom.NodeList」を取得する必要があるかもしれませんか?
ありがとう、そして私の下手な英語でごめんなさい... :s