2011-04-12 61 views
0
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得到错误的DOM解析器

编辑使用这个代码解析的XML!

<?xml version="1.0" encoding="ISO-8859-1"?> 
<root status="1"> 
<reminder type= "timer" id="861"> 
<user fromid="48" toid="48" fromemail="[email protected]">Dharmendra Patel</user> 
<title>10:00 AM Coffy?</title> 
<desc>Let&#039;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); 

如果节点值包含字符串,如“让我们去coeffy”所以这给了我串像“让我们去coeffy”那么问题是什么?请帮助我..

回答

1

您可以使用Element.getTextContent()获取元素文本。请注意,此方法只能在API级别8和更高级别上使用。

在APi级别小于8时,您可以使用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:

对付#& ......实体在结果上使用编码的字符串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=\"[email protected]\">Dharmendra Patel</user> <title>10:00 AM Coffy?</title> <desc>Let&#039;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 
    } 
+0

让我们去科菲是我的标签现在我如果(第二!= NULL && nd.getNodeType()== nd.TEXT_NODE){ \t \t \t \t的System.out.println(使用本“Node value =”+ nd.getNodeValue());}但我得到一个字符串,如“让我们去coeffy” – Dharmendra 2011-04-12 07:03:53

+0

@Dharmendra,我编辑了我的答案。 – Olegas 2011-04-12 17:23:25

+0

谢谢@ Olegas,但我得到字符串像“让' s去科菲”从响应和我得到的输出像“让”,所以请帮助我,如果有任何想法... – Dharmendra 2011-04-13 03:50:15