2011-04-06 139 views
1

<?xml version =「1.0」encoding =「utf-8」? > < rss xmlns:media =「http://search.yahoo.com/mrss/」xmlns:ynews =「http://news.yahoo.com/rss/」version =「2.0」> <頻道>使用java分割xml文件

< title>板球新聞標題|板球新聞 - 雅虎新聞印度</TITLE>

<鏈接> http://in.news.yahoo.com/cricket/ < /鏈接>

<說明>查看從雅虎最新的板球新聞頭條新聞印度。查找頂級板球故事和 來自印度和世界各地的板球新聞的深度報道。 < /說明>

<語言> EN-IN < /語言>

<版權>版權所有(C)2011雅虎Inc.版權所有< /版權>

< pubdate的> 2011-04-06T15:30:02 + 05:30 </pubdate的>

< TTL> 5 </TTL>

<圖片>

< title>板球新聞標題|板球新聞 - 雅虎新聞印度</TITLE>

<鏈接> http://in.news.yahoo.com/cricket/ < /鏈接>

<網址> http://l.yimg.com/os/ MIT /媒體/ M /索引/ IMG/Yahoo_logo_en- IN.gif </URL>

< /圖像> <項目> <標題>繁忙的日程會流失玩家,說的Dhoni </TITLE>

<描述>奈,4月6日(PTI)... < /描述>

<鏈路> http://in.news.yahoo.com/hectic-schedule-drain-players-says-dhoni-20110406- 023100-889.html < /鏈路>

< pubdate的> 2011-04-06T09:31:00Z </pubdate的>

<源> PTI < /源>

< GUID isPermaLink =」假「> /繁忙的時間表漏播放器-說,DHO NI-20110406-023100-889。HTML </GUID>

< /項目>

<項目>

<標題>印度,巴基斯坦貿易祕書滿足於4月27日至28日</TITLE>

<說明>新德里4月6日電(PTI)... </description>

<鏈接> http://in.news.yahoo.com/ind IA - 巴基斯坦 - 貿易書記強相遇,四月27-28-20110406-023100-140.html < /鏈接>

我只想從這個XML的頭條新聞,這只是間<項目> <標題>消息</title>標籤。還必須連續打印信息。我怎樣才能做到這一點。

+0

http://www.java-tips.org/java-se-tips/javax.xml.parsers/how-to-read-xml-file-in-java.html – 2011-04-06 12:15:17

+0

您想解析RSS提要?看看這個問題的答案:http://stackoverflow.com/questions/113063/java-rss-library – 2011-04-06 12:16:36

回答

4

我會使用包含在Java SE 5中的javax.xml.xpath API。

import java.io.FileReader; 
import javax.xml.xpath.XPath; 
import javax.xml.xpath.XPathConstants; 
import javax.xml.xpath.XPathFactory; 
import org.w3c.dom.NodeList; 
import org.xml.sax.InputSource; 

public class Demo { 

    public static void main(String[] args) throws Exception { 
     XPath xPath = XPathFactory.newInstance().newXPath(); 

     FileReader reader = new FileReader("input.xml"); 
     InputSource xml = new InputSource(reader); 
     NodeList titleNodes = (NodeList) xPath.evaluate("//item/title", xml, XPathConstants.NODESET); 

     for(int x=0; x<titleNodes.getLength(); x++) { 
      System.out.println(titleNodes.item(x).getTextContent()); 
     } 
    } 

} 
+0

我必須讀取每5分鐘的實時數據並打印它,我該怎麼做,我不能能夠將其存儲在文件中。 – 2011-04-07 04:27:07

+0

@tr_tech - 您可以在任何類型的InputStream或Reader上創建InputSource。您還可以傳遞其他輸入類型,如DOM節點。 – 2011-04-07 14:12:11

1

解析文件以創建DOM文檔。在此DOM上,選擇所有title元素及其文本內容是您正在尋找的標題。

dom4j簡單的例子:

File xml = new File("input.xml");  // replace with your document 
SAXReader reader = new SAXReader(); 
Document doc = reader.read(xml); 
List titles = doc.selectNode("//item/title"); // a list of all title elements 
for (Object obj:titles) 
    System.out.println(((Element) obj).getText()); 

應該打印所有標題到控制檯

+0

使用標準的javax.xml.xpath庫,您不需要首先將XML實現爲一個DOM:http://stackoverflow.com/questions/5566124/splitting-up-of-xml-file-using-java/5566161 #5566161 – 2011-04-06 13:15:57