2012-03-31 4 views
1

У меня есть объект java с 10 атрибутами. 3-4 из атрибутов поступают из файла XML.Разбор большого XML-файла с Java

В XML есть один элемент с 100-150 атрибутами. Так что мне нужно разобрать весь мой XML-файл (у меня нет XSD для этого) и узнать атрибуты 3-4 и получить их значение.

Мне нужны предложения относительно того, какую технологию использовать и в частности, работает ли JAXB в моем случае? Любая помощь приветствуется.

+0

Является ли прилагательное «большим», относящимся к проблеме? Если это так, нам нужно знать, насколько велики большие. Для некоторых людей 2Mb большой, другие - 20Gb. Вы говорите, что XML «имеет один элемент со 100-150 атрибутами». Это неоднозначно. Это может означать, что XML содержит только один элемент, и этот элемент имеет 100-150 атрибутов. Или это может означать, что XML имеет много элементов, один из которых имеет 100-150 атрибутов. Это различие может иметь большое значение для ответа. –

+0

Проверить [Может ли JAXB анализировать большие XML-файлы в кусках] (http://stackoverflow.com/questions/1134189) и [JAXB FAQ: Работа с большими документами] (http://jaxb.java.net/guide/Dealing_with_large_documents. HTML). –

+0

@Michael: Мой файл 1 МБ. Файл содержит конфигурацию одного устройства. Он содержит описание числовых протоколов. И каждый протокол имеет в нем 2-3 поля. Меня интересуют значения 2 или 3 протокола. – user892871

ответ

2

Да JAXB (JSR-222) работает в этом прецеденте:

У меня есть объект Java с 10 атрибутов. 3-4 из атрибутов приходят из файла XML.

Когда менее половины вашего объекта сопоставляется с XML с помощью JAXB, я рекомендую использовать @XmlAccessorType(XmlAccessType.NONE). Это говорит JAXB, что только явные аннотированные свойства сопоставляются с XML.

XML, имеет один элемент с 100-150 атрибутов в нем. Так что мне нужно разобрать весь мой XML-файл (у меня нет XSD для этого) и узнать атрибуты 3-4 и получить их значение.

Реализация JAXB будет использовать анализатор STAX или SAX для обработки XML-документа. Это довольно эффективные парсеры и не требуют большой памяти.

+0

Спасибо за ваши данные. Я новичок, и я не понимаю, зачем нужен парсер для обработки XML-документа? Не может ли этот метод для Jax-B использовать для меня? – user892871

+0

@ user892871 - Все, что вам нужно, это JAXB. Я имел в виду, что реализация JAXB (JSR-222) будет использовать парсер более низкого уровня для эффективного управления любым размером XML-документа. –

+0

Спасибо, Блейз. – user892871

Смежные вопросы