< ?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”> <频道>
<标题>板球新闻标题|板球新闻 - 雅虎!新闻印度< /标题>
&LT;链路&GT; HTTP://in.news.yahoo.com/cricket/< /链路&GT;
&LT;说明&gt;查看Yahoo!最新的Cricket新闻标题。新闻印度。查找顶级板球故事和深入报道 来自印度和世界各地的板球新闻。&lt; /描述&GT;
&LT;语言&GT;恩-IN&LT; /语言&GT;
&LT;版权所有&gt;版权所有(c)2011 Yahoo!保留所有权利&lt; /版权&GT;
&LT; pubdate的&GT; 2011-04-06T15:30:02 + 05:30℃; / pubdate的&GT;
&LT; TTL→5&LT; / TTL&GT;
&LT;图像&gt;
&LT;标题&gt;板球新闻标题|板球新闻 - 雅虎!新闻印度&lt; /标题&GT;
&LT;链路&GT; HTTP://in.news.yahoo.com/cricket/< /链路&GT;
&LT; URL&GT; HTTP://l.yimg.com/os/mit/media/m/index/img/Yahoo_logo_en- IN.gif&LT; / URL&GT;
&LT; /图像&gt; &LT;项&GT;&LT; Dhoni&lt; dhoni&lt; Dhoni&lt; Dhoni&lt; Dhoni&lt; Dhoni&lt; /标题&GT;
&LT;描述&gt; Chennai,4月6日(PTI)......&lt; /描述&GT;
&LT;链路&GT; HTTP://in.news.yahoo.com/hectic-schedule-drain-players-says-dhoni-20110406-023100-889.html< /链路&GT;
&LT; pubdate的&GT; 2011-04-06T09:31:00Z&LT; / pubdate的&GT;
&LT;源&GT; PTI&LT; /源&GT;
&LT; guid isPermaLink =“false”&gt; /hectic-schedule-drain-players-says-dhoni-20110406-023100-889.html< / GUID&GT;
&LT; /项目&GT;
&LT;项&GT;
&LT;标题&gt;印度,巴基斯坦贸易部长将于4月27日至28日举行会议&lt; /标题&GT;
&LT;描述&gt;新德里,4月6日(PTI)......&lt; /描述&GT;
&LT;链路&GT; HTTP://in.news.yahoo.com/india-pakistan-trade-secretaries-meet-april-27-28-20110406-023100-140.html< /链路&GT;
我只想要来自这个XML的HEADLINES,它只在&lt;项&GT;&LT;标题&GT;邮件&LT; /标题&GT;标签。还必须一个接一个地打印消息。我怎样才能做到这一点。
答案 0 :(得分: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());
}
}
}
答案 1 :(得分: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());
应将所有标题打印到控制台
答案 2 :(得分:0)
这是经常出现的事情。我有一个groovy脚本来做到这一点。它可以在这里找到。
https://github.com/ramanathanrv/utils/blob/master/groovy/split_xml.groovy
用法:groovy split_xml.groovy&lt; input_file_name&gt; &LT; no_of_pieces&GT;
PS:这不是我的代码。我从某个地方得到了这个代码,但真的忘记了源代码。