Xml解析问题

时间:2011-01-20 10:06:50

标签: java 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中有一些像’所以当我打电话时

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 个答案:

答案 0 :(得分: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部分,但它也可能会更改字符实体的处理。