2011-04-12 59 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