私はAndroid 1.5用のアプリケーションを開発中です。現在、私はXMLファイルを解析する必要があります。 AndroidはAPIレベル3でネイティブにXPathをサポートしていないため、dom4jライブラリとjaxenライブラリを使用してファイルを読み込むことにしました。Android 1.5とdom4j - 属性名が正しく解析されない
私は、単純なXMLファイル(test1.xml)があります、それはtest1.xmlファイルを読み込み
SAXReader reader = new SAXReader();
Document doc = reader.read("file:///sdcard/tests/test1.xml");
Node node = doc.selectSingleNode("/tests/test");
Element elem = (Element)node;
for(int j=0;j<elem.attributeCount();++j) {
Attribute attr = elem.attribute(j);
Logger.getLogger(AutoTesterMain.class.getName()).log(Level.SEVERE, "ATTR: "+attr.getName()+"="+attr.getValue());
}
"/テスト/テスト" ノードとを列挙を見つける:
<?xml version="1.0" encoding="utf-8" ?>
<tests>
<resources base_lang="en">
<string base="example">
<localization lang="pl">Przykład</localization>
</string>
</resources>
<test name="main name">
<title>Main Title</title>
<description>Long description</description>
</test>
</tests>
、簡単なコードをそれは属性です。私は(私はJavaの用語では深くはないよ)「デスクトップ」のJavaアプリケーションの一部として、このコードを実行すると、それは私が(のFedora LinuxでのOpenJDK 1.8.3)を期待するものが表示さ:
SEVERE: ATTR: name=main name
を残念ながら、中1.5(エミュレータOFC)のAndroid、まったく同じコードを示しています
E/AutoTesterMain( 823): ATTR: base_lang=main name
あなたが見ることができるように、属性の値はOKですが、名前の問題があります。私は完全に他のDOM要素( "/ tests/resources")からの属性の名前がなぜこの場所に現れているのか全く分かりません。両方のバージョンは、のdom4jとにJaxenライブラリとまったく同じ.jarsを使用していますので、これはおそらく大丈夫です。もちろん、
...間違って私のファイルを解析すると思われるので、私はおそらく何かを間違って設定します。
この問題は、リストだけ間違った属性よりも効果があります。また、 "/ tests/test/@ base_lang"は "main name"という文字列を返しますが、 "/ tests/test/@ name"を選択すると何も表示されません。これは明らかに、上のリストの属性と同じエラーが原因です。
は、誰もがこれに遭遇していますか?どうすれば修正できますか?ネイティブのXPathをサポートした新しいアンドロイドへの移行
は、残念ながら私のためのオプションではありません。
私はここでウェブとの何かを見つけようとしますが、運を持っていませんでした。