【发布时间】:2013-04-21 21:54:39
【问题描述】:
我正在创建一个应用程序来解析一些 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() 方法只返回 &amp; 之前的文本,所以结果是这样的:
【问题讨论】:
标签: java android xml-parsing escaping