private String getNodeValue(Element e) {
String str = "";
Node node = e.getFirstChild();
if (node instanceof CharacterData) {
CharacterData cd = (CharacterData) node;
str += cd.getData();
}
System.out.println("String ="+ str);
return str;
}
我正在使用此代码使用DOM
解析xml修改<!/强>
<?xml version="1.0" encoding="ISO-8859-1"?>
<root status="1">
<reminder type= "timer" id="861">
<user fromid="48" toid="48" fromemail="xyz@xyz.com">Dharmendra Patel</user>
<title>10:00 AM Coffy?</title>
<desc>Let's go for coffy</desc>
<date>13/03/2011 09:22:00</date>
<repeat>MO</repeat>
<todo><category name="">
<item></item>
</category>
</todo>
</reminder>
</root>
这是我的XMl响应,我正在使用此代码
NodeList nldesc = elUser.getElementsByTagName("desc");
Element eldesc = (Element) nldesc.item(0);
String taskdesc = getNodeValue(eldesc);
如果节点值包含像“让我们去为cosffy”这样的字符串,那么这给了我像“Lets go for coeffy”这样的字符串,那么问题是什么?请帮帮我..
答案 0 :(得分:1)
您可以使用Element.getTextContent()获取元素文字。请注意,此方法只能在API级别8及更高版本中加入。
在小于8的APi级别中,您可以使用getNodeValue方法。仅当您的节点类型为TEXT_NODE
时,它才会成功修改强>
try {
Document doc =
DocumentBuilderFactory
.newInstance()
.newDocumentBuilder().parse(
new StringBufferInputStream("<desc>let's go for Coffey </desc>"));
NodeList list = doc.getElementsByTagName("desc");
Log.d("MainActivity", list.item(0).getFirstChild().getNodeValue());
} catch (ParserConfigurationException e) {
// ignore
} catch (IOException e) {
// ignore
} catch (SAXException e) {
// ignore
}
以下代码运行正常。执行完后,我已经登录了我的logcat:
04-12 21:20:42.766: DEBUG/MainActivity(26843): let's go for Coffey
编辑2:
要处理#&amp; ...实体,请在编码字符串上使用Html.fromHtml(String)方法,然后在结果上使用toString()。
Log.d("MainActivity",
Html.fromHTML(
list.item(0).getFirstChild().getNodeValue()
).toString());
编辑3
以下是您案例的完整解决方案。
String data = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?> <root status=\"1\"> <reminder type= \"timer\" id=\"861\"> <user fromid=\"48\" toid=\"48\" fromemail=\"xyz@xyz.com\">Dharmendra Patel</user> <title>10:00 AM Coffy?</title> <desc>Let's go for coffy</desc> <date>13/03/2011 09:22:00</date> <repeat>MO</repeat> <todo><category name=\"\"> <item></item> </category> </todo> </reminder> </root>";
try {
Document doc =
DocumentBuilderFactory
.newInstance()
.newDocumentBuilder().parse(
new StringBufferInputStream(data));
NodeList list = doc.getElementsByTagName("desc");
Node node = list.item(0);
NodeList charNodes = node.getChildNodes();
StringBuilder builder = new StringBuilder();
for(int i = 0, l = charNodes.getLength(); i < l; i++) {
builder.append(Html.fromHtml(charNodes.item(i).getNodeValue()).toString());
}
Log.d("MainActivity", builder.toString());
} catch (ParserConfigurationException e) {
// ignore
} catch (IOException e) {
// ignore
} catch (SAXException e) {
// ignore
}