разделение XML-файла с использованием Java - PullRequest
1 голос
/ 06 апреля 2011

<? Xml version = "1.0" encoding = "utf-8"?> <канал>

Заголовки новостей крикета |Новости крикета - Yahoo!News India

http://in.news.yahoo.com/cricket/

Ознакомьтесь с последними новостями по крикету от Yahoo!Новости Индии.Найдите лучшие истории о крикете и подробное освещение новостей о крикете из Индии и всего мира.

en-IN

Copyright (в) 2011 Yahoo!Inc. Все права защищены

2011-04-06T15: 30: 02 + 05: 30

5

Заголовки новостей крикета |Новости крикета - Yahoo!Новости Индии

http://in.news.yahoo.com/cricket/

http://l.yimg.com/os/mit/media/m/index/img/Yahoo_logo_en- IN.gif

Гектическое расписание истощает игроков, говорит Дони

Ченнаи, 6 апреля (PTI) ...

<ссылка>http://in.news.yahoo.com/hectic-schedule-drain-players-says-dhoni-20110406-023100-889.html

2011-04-06T09: 31: 00Z

PTI

/ беспокойный график-сток-игроки-говорит-dhoni-20110406-023100-889.html

Индия, Пакистан встретятся с министрами торговли 27-28 апреля.

Нью-Дели, 6 апреля (PTI) ...

http://in.news.yahoo.com/india-pakistan-trade-secretaries-meet-april-27-28-20110406-023100-140.html

Я хочу только заголовки из этого XML, то есть только между тегами MESSAGES .Также приходится печатать сообщение одно за другим непрерывно.как я могу это сделать.

Ответы [ 3 ]

4 голосов
/ 06 апреля 2011

Я бы использовал для этого API javax.xml.xpath, которые включены в 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());
        }
    }

}
1 голос
/ 06 апреля 2011

Анализ файла для создания документа 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 голосов
/ 06 апреля 2011

Это часто встречается.У меня есть отличный сценарий для этого.Это доступно здесь.

https://github.com/ramanathanrv/utils/blob/master/groovy/split_xml.groovy

Использование: groovy split_xml.groovy

PS: Это не мой код.Я получил этот код откуда-то, но действительно забыл исходный код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...