使用java分割xml文件
<?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>标签。还必须连续打印信息。我怎样才能做到这一点。
我会使用包含在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());
}
}
}
我必须读取每5分钟的实时数据并打印它,我该怎么做,我不能能够将其存储在文件中。 – 2011-04-07 04:27:07
@tr_tech - 您可以在任何类型的InputStream或Reader上创建InputSource。您还可以传递其他输入类型,如DOM节点。 – 2011-04-07 14:12:11
解析文件以创建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());
应该打印所有标题到控制台
使用标准的javax.xml.xpath库,您不需要首先将XML实现为一个DOM:http://*.com/questions/5566124/splitting-up-of-xml-file-using-java/5566161 #5566161 – 2011-04-06 13:15:57
这是一件经常出现。我有一个groovy脚本来做到这一点。它在这里可用。
https://github.com/ramanathanrv/utils/blob/master/groovy/split_xml.groovy
用法:常规split_xml.groovy <input_file_name> <no_of_pieces>
PS:这不是我的代码。我从某个地方得到了这段代码,但真的忘了源代码。
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
您想解析RSS提要?看看这个问题的答案:http://*.com/questions/113063/java-rss-library – 2011-04-06 12:16:36