<? 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" > < канал >
< название > Новости крикета | Новости крикета - Yahoo! Новости Индия </Название >
< ссылкa > http://in.news.yahoo.com/cricket/</Ссылкa >
< описание > Ознакомьтесь с последними заголовками новостей Cricket от Yahoo! Новости Индия. Найдите лучшие истории крикета и углубленное освещение Новости крикета из Индии и по всему миру./Описание >
< язык > ен-IN </Язык >
<copyright> Copyright (c) 2011 Yahoo! Inc. Все права защищены </Авторское право >
<PubDate> 2011-04-06T15: 30: 02 + 05: 30 </PubDate>
< ТТЛ > 5 </ТТЛ >
< Изображение >
< название > Новости крикета | Новости крикета - Yahoo! Новости Индия </Название >
< ссылкa > http://in.news.yahoo.com/cricket/</Ссылкa >
<URL> http://l.yimg.com/os/mit/media/m/index/img/Yahoo_logo_en- IN.gif </Url>
</Изображение > < Пункт > <title> График Hectic истощает игроков, говорит Dhoni </Название >
< описание > Ченнаи, 6 апреля (PTI)... </Описание >
< ссылкa > http://in.news.yahoo.com/hectic-schedule-drain-players-says-dhoni-20110406-023100-889.html</Ссылкa >
<PubDate> 2011-04-06T09: 31: 00Z </PubDate>
< источник > ПТИ </Источник >
< guid isPermaLink = "false" > /hectic-schedule-drain-players-says-dhoni-20110406-023100-889.html </GUID>
</Элемент >
< пункт >
<title> Индия, Пакистанские торговые секретари проведут встречу 27-28 апреля,/Название >
< описание > Нью-Дели, 6 апреля (PTI)... </Описание >
< ссылкa > http://in.news.yahoo.com/india-pakistan-trade-secretaries-meet-april-27-28-20110406-023100-140.html</Ссылкa >
Я хочу только HEADLINES из этого XML, который находится только между < Пункт > < Название > СООБЩЕНИЙ </title> . Также необходимо печатать сообщение один за другим непрерывно. как я могу это сделать.
Я бы использовал javax.xml.xpath
API, которые включены в Java SE 5 для этого.
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());
}
}
}
Разберите файл для создания документа 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());
Чтобы напечатать все заголовки на консоли
Это то, что часто возникает. У меня есть groovy script. Он доступен здесь.
https://github.com/ramanathanrv/utils/blob/master/groovy/split_xml.groovy
Использование: groovy split_xml.groovy <input_file_name > <no_of_pieces >
PS: Это не мой код. Я получил этот код откуда-то, но на самом деле забыл источник.