XML を解析して ListView に表示するアプリを作成しています。XML のいくつかの項目に&
s が含まれているため、このようにエスケープし&
ました。いくつかのデバイスとエミュレーターで正しく動作しています。
しかし、2 つのデバイス (Samsung Sidekick 4g API 2.2 と Samsung Replish API 2.3.6) では失敗します。取得後のすべて&
が魔法のように消えます。
問題を引き起こしている XML の項目は次のとおりです。
<site>
<name>English Language & Usage</name>
<link>http://english.stackexchange.com/</link>
<about>English Language & Usage Stack Exchange is a question and answer site for linguists, etymologists, and serious English language enthusiasts.</about>
<image>https://dl.dropboxusercontent.com/u/5724095/XmlParseExample/english.png</image>
</site>
解析コードの「要点」は次のとおりです。
private static String getValue(Element item, String str) {
NodeList n = item.getElementsByTagName(str);
Log.i("StackSites", ""+getElementValue(n.item(0)));
return getElementValue(n.item(0));
}
private static String getElementValue( Node elem ) {
Node child;
if( elem != null){
if (elem.hasChildNodes()){
for( child = elem.getFirstChild(); child != null; child = child.getNextSibling() ){
if( child.getNodeType() == Node.TEXT_NODE ){
return child.getNodeValue();
}
}
}
}
return "";
}
一部のデバイス (LG Optimus G、Moto Attrix 2、およびいくつかのエミュレーター) では、これは正しく機能し、次のようになります。
ただし、私が試した2つのSamsungデバイスではgetValue()
、メソッドはの前にあるテキストのみを返す&
ため、結果は次のようになります: