Какой Java XML Parser для простой обработки? - PullRequest
3 голосов
/ 02 марта 2011

Я создаю XML в Java-приложении.Я смотрю на множество вариантов разбора XML.Я не собираюсь делать что-то большее, чем обходить структуру и извлекать из нее ценности.Мне нужно использовать один из них, который встроен в Java API (1.5+) без каких-либо дополнительных плагинов.Мне не нужно создавать «события» или превращать их во что-то еще.Я не создаю XML, просто читаю и извлекаю данные.Я также не использую схему.

Sun предоставляет здесь список, но не совсем понятно, что мне следует использовать.

http://java.sun.com/developer/technicalArticles/xml/JavaTechandXML/

Что будет наиболееподходящий XML API для использования в этом случае?JAXP?JDom?XPath?

Ответы [ 9 ]

4 голосов
/ 02 марта 2011

Я думаю, использование синтаксического анализатора DOM для синтаксического анализа XML и загрузки его в память в документе звучит достаточно для ваших нужд.

В этом случае вы бы не использовали XPath, только Document API.

JAXP - это просто синоним технологии разбора XML, встроенной в JDK.Термин JAXP (P - для анализа) отличает его от JAXB (B - для привязки).

Некоторые сторонние библиотеки, созданные на основе DOM, могут упростить вашу жизнь.Подумайте о JDOM или DOM4J.

2 голосов
/ 02 марта 2011

Самым классическим способом работы в IMO будет сочетание JAXP и XPath. Java 5.0 включает в себя JAXP 1.3, и это стандартная штука. Пожалуйста, посмотрите этот ответ на аналогичный вопрос для минималистического примера кодирования.

1 голос
/ 27 декабря 2012

Использование стандартного парсера DOM достаточно для вашей цели. Попробуйте этот пример .

1 голос
/ 02 марта 2011

В качестве стратегии синтаксического анализа вы можете использовать любую стратегию DOM, которая имеет то преимущество, что закрытый документ хранится в памяти и вы можете получить к нему доступ через xpath. Я рекомендую это, если у вас есть небольшие XML-документы или если вам действительно нужны все данные, которые должны присутствовать и быть доступными постоянно, потому что это занимает много места в куче.

если у вас есть документы большего размера или вам не нужен постоянный доступ, вам следует либо использовать метод SAX, либо метод Stax (синтаксический анализ xml pull), если он доступен в вашем Java-дистрибутиве. Эти методы основаны на событиях. поэтому они проходят через дерево xml и делают своего рода обратный вызов к определенному вами классу. так что вы можете реагировать на такие события, как «элемент ху начинается» «элемент ху заканчивается»

1 голос
/ 02 марта 2011

Парсер DOM - это то, что вы ищете, я думаю. прост в реализации и имеет возможность быстрого поиска узла

1 голос
/ 02 марта 2011

Я думаю, что наиболее практичным инструментом является XStream от ThoughtWorks.Некоторые современные платформы MVC, такие как VRaptor, используют его для обслуживания и использования XML.Взгляните на: http://x -stream.github.io /

0 голосов
/ 02 марта 2011

Кажется, что SAX - это API, который вы хотите.

Google "SAX Parsing", и вы найдете много примеров.

0 голосов
/ 02 марта 2011

Если это очень тривиально - делайте это в SAX-парсере.

0 голосов
/ 02 марта 2011

XOM .

Использовать xpath.

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