我正在创建一个解析一些 XML 并将其显示在 ListView 中的应用程序。我的 xml 中的一些项目包含&
s 所以我已经像这样对它们进行了转义&
它在一些设备和模拟器上正常工作。
但在两台设备(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 和一些仿真器)上,它可以正常工作并如下所示:
然而,在我尝试过的两台三星设备上,getValue()
方法只返回之前的文本,&
所以结果是这样的: