我正在创建一个应用程序来解析一些 XML 并将其显示在 ListView 中。我的 xml 中的一些项目包含 &
,所以我像这样对它们进行了转义 &
它在一些设备和模拟器上正常工作。
但在两个设备(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()
方法只返回 &
之前的文本,所以结果是这样的:
最佳答案
那是因为您没有查看其余节点。实体获得不同的节点,实体后面的文本获得之后的节点。您将立即返回——您需要连接您的结果。
关于java - 解析 XML,删除 & 之后的所有字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16136627/