Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как вы парсите XML на java? Как вы парсите XML на java? 
:(
    Опции темы
cosamia
Дата 11.5.2005, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 11.5.2005

Репутация: нет
Всего: нет



сабж. Если можно код.

PM   Вверх
batigoal
Дата 11.5.2005, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



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

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


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
kashka
Дата 12.5.2005, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 29.11.2004
Где: Wolfenbuettel, Ge rmany

Репутация: 1
Всего: 1



SAXParser и JDOM, SAX парсит последовательно без учета иерархической структуры.
PM MAIL   Вверх
batigoal
Дата 12.5.2005, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Пример очень простого класса-парсера для 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(); и т.д.

Это сообщение отредактировал(а) Lamer George - 12.5.2005, 12:45


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Stampede
Дата 12.5.2005, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 24
Всего: 144



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


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



--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
Slanix
Дата 14.5.2005, 08:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 30.1.2004

Репутация: нет
Всего: 1



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");

--------------------
Я буду искать лица Твоего, Господи Пс.26:8
PM MAIL ICQ YIM   Вверх
batigoal
Дата 14.5.2005, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



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


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
hatsumeika
Дата 14.5.2005, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 14.5.2005
Где: Минск

Репутация: 2
Всего: 2



Я бы порекомендовал Castor (http://www.castor.org/).

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

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

castror.jar идет вместе с JBuilder, но нет проблем взять с сайта, если у тебя другая IDE.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0644 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.