Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Как вы парсите XML на java?


Автор: cosamia 11.5.2005, 13:47
сабж. Если можно код.

Автор: batigoal 11.5.2005, 16:45
Вот официальные туториалы:
http://java.sun.com/xml/tutorial_intro.html
http://java.sun.com/xml/jaxp/dist/1.1/docs/tutorial/

А код - завтра smile

Автор: kashka 12.5.2005, 11:18
SAXParser и JDOM, SAX парсит последовательно без учета иерархической структуры.

Автор: batigoal 12.5.2005, 12:44
Пример очень простого класса-парсера для DOM с единственным статическим методом:
Код

import org.w3c.dom.Document;

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import java.io.File;

public class Parser
{
    public static Document parseFile(File file)
    {
        Document document = null;
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        factory.setValidating(false);
        factory.setNamespaceAware(true);

        try
        {
            DocumentBuilder builder = factory.newDocumentBuilder();
            document = builder.parse(file);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }

        return document;
    }
}


Потом можно взять список дочерних узлов корневого элемента и работать с ними:
Код

NodeList list = document.getDocumentElement().getChildNodes();
for (int i = 0; i < list.getLength(); i++)
{
  if (node.getNodeType() == Node.ELEMENT_NODE) // одни действия
  if (node.getNodeType() == Node.TEXT_NODE) // другие действия
}


Для получения атрибутов элемента можно воспользоваться node.getAttributes(); и т.д.

Автор: Stampede 12.5.2005, 14:53
Цитата(cosamia @ 11.5.2005, 13:47)
Как вы парсите XML на java?


А ты расскажи, в чем задача. А то парсить можно по разному smile

Автор: Slanix 14.5.2005, 08:33
JDOM.
Код

        SAXBuilder builder = new SAXBuilder("org.apache.xerces.parsers.SAXParser");        
        org.jdom.Document document = builder.build(file);

        // Получаем корневой элемент документа
        Element root = document.getRootElement();

         // Получаем элемент "Enterprise"
        Element eEnterprise = root.getChild("Enterprise");

        // Получаем значение атрибута "complex"
        String complex = eEnterprise.getAttributeValue("complex");

Автор: batigoal 14.5.2005, 13:49
Кстати, а почему называется JDOM, а используется SAX-парсер?

Автор: hatsumeika 14.5.2005, 19:10
Я бы порекомендовал Castor (http://www.castor.org/).

Эта тулза генерит Java-классы на основе XSD. После этого можно загрузить XML в объекты и выгрузить из объектов. Работать через объекты одно удовольствие - используются методы get и set, все весьма комфортно.

По объему данных мы тестировали на нескольких сотнях тысяч элементов - работает нормально.

castror.jar идет вместе с JBuilder, но нет проблем взять с сайта, если у тебя другая IDE.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)