2011-01-20 166 views
3

我得到一些文本从XML文件XML解析问题

URL url_Twitter = new URL("http://twitter.com/statuses/user_timelineID_PROVA.rss"); 
HttpURLConnection conn_Twitter =(HttpURLConnection)url_Twitter.openConnection(); 

DocumentBuilderFactory documentBF_Twitter = DocumentBuilderFactory.newInstance();    
DocumentBuilder documentB_Twitter = documentBF_Twitter.newDocumentBuilder();  
Document document_Twitter = documentB_Twitter.parse(conn_Twitter.getInputStream()); 

在XML中有像&#8217的某些字符;所以当我打电话

document_Twitter.getElementsByTagName("title").item(2).getFirstChild().getNodeValue() 

字符串是那种人物

的文本是在短短的一个标签

<item> 
    <title>SMWRME: Internet per &#8220;Collaborare senza confini&#8221;. Soprattutto alla SMW di Roma, dal 7 all'11 febbraio. Ecco il terzo percorso. http://cot.ag/ewnJ4F</title> 
    <description>SMWRME: Internet per &#8220;Collaborare senza confini&#8221;. Soprattutto alla SMW di Roma, dal 7 all'11 febbraio. Ecco il terzo percorso. http://cot.ag/ewnJ4F</description> 
    <pubDate>Mon, 27 Dec 2010 20:05:01 +0000</pubDate> 
    <guid>http://twitter.com/SMWRME/statuses/19483914259140609</guid> 
    <link>http://twitter.com/SMWRME/statuses/19483914259140609</link> 
    <twitter:source>&lt;a href=&quot;http://cotweet.com/?utm_source=sp1&quot; rel=&quot;nofollow&quot;&gt;CoTweet&lt;/a&gt;</twitter:source> 
    <twitter:place/> 
    </item> 

我注意到,这种行为确实发生只是Android应用之前集群。 相同的代码适用于java应用程序。 有人可以帮我吗?

回答

1

您能试试document_Twitter.getElementsByTagName("title").item(2).getTextContent()吗?有可能实际上是多个文本节点此节点下,像

- "item" element 
    - "title" element 
    - text node "SMWRME: Internet per " 
    - text node "&#8220;" 
    - text node "Collaborare senza confini" 
    - text node "&#8221;" 

大多数SAX解析器将在多个部门提供的字符内容拆分,所以我能想象一个DOM解析器这样做。 方法getTextContent应返回连接的所有子子节点的文本内容。

在创建DocumentBuilder之前,您也可以尝试在DocumentBuilderFactory上调用setCoalescing(true),文档中提到这会影响CDATA部分,但它也可能会改变对字符实体的处理。

+0

感谢您的回答,我检查了xml文件 – alessandro 2011-01-20 10:20:07