Быстро, легкий [закрытый] синтаксический анализатор XML

10
задан tharindu_DG 9 August 2016 в 14:51
поделиться

7 ответов

Нет, для этого не стоит пытаться написать свой собственный парсер XML.

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

Если у вас есть небольшие файлы и вам не нужно беспокоиться о производительности, посмотрите на использование DOM. Реализация Java может быть немного раздражающей в использовании (Вы создаете документ с помощью DocumentBuilder, который идет с DocumentBuilderFactory)

Код для создания документа из файла выглядит следующим образом:

Document d = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new FileInputStream("file.xml"));

(обратите внимание, что сохранение ссылки на ваш конструктор документов ускорит процесс, если вам необходимо разобрать несколько файлов)

Затем вы используете функцию в org.w3c.dom.Document для чтения или манипулирования содержимым. Например getElementsByTagName() возвращает все элементы с определенным именем тега.

11
ответ дан 3 December 2019 в 17:58
поделиться

Это действительно зависит от типа XML, который вы разбираетесь. Я бы не написал свой собственный парсер, когда есть что-то уже там, чтобы сделать работу для вас.

Выбор SAX / DOM действительно основан на том, что вы пытаетесь разбираться, увидеть это для того, как решить, на каком использовании:

http://geekexplains.blogspot.com/2009/04/ SAX-VS-DOM-различия - между-DOM-and.html

Даже если вы не используете SAX / DOM, есть все еще простые варианты, доступные для вас, посмотрите на простой :)

http: / /simple.sourceforge.net/

you может также захотеть рассмотреть stax.

7
ответ дан 3 December 2019 в 17:58
поделиться

Вы можете использовать DOM4J / XSTREAM, чтобы прочитать XML в эквивалентный модаль Java, а затем использовать JSONLIB для преобразования в JSON.

1
ответ дан 3 December 2019 в 17:58
поделиться

Может быть, вы должны посмотреть на KXML 2, небольшой XML Pull Parser, специально разработанный для ограниченных сред, для доступа, анализа и отображения файлов XML для устройств с поддержкой Java 2 Micro. Это хорошо работает с Java Se / EE тоже ;-). Как оно предназначено для Micro Edition, это действительно легкий вес (маленький след), и ИМХО действительно простым в использовании (гораздо более проще, чем SAX / DOM и т. Д.).

Из моего собственного опыта работы с KXML 2: я использовал его для разбора файлов XML размером более 1 ГБ - свалки в Википедии, и я был очень доволен производительностью / потреблением памяти и т. Д.

;-) - Ссылка: http://kxml.sourceforge.net/kxml2/

3
ответ дан 3 December 2019 в 17:58
поделиться

Используйте настоящий анализатор XML. Если вы этого не сделаете, вы, вероятно, будете укушены, когда что-то изменится. Документ может быть «очень строгим», но через два года, что-то, вероятно, будет повторно фактически, и он изменит структуру так, чтобы он разобрался на одной и той же структуре данных с анализатором XML и разбивает анализатор струны домов.

0
ответ дан 3 December 2019 в 17:58
поделиться

Разборка на бэкэнде и разоблачении JSON, вероятно, является правильным способом идти так, чтобы у вас было бы данные общего назначения JSON, которые вы можете легко интегрироваться с другими источниками, но если у вас есть Простое сообщение, и это единственное место, где вы считаете, что вы бы использовали JSON, вы можете попытаться сделать сторону Client Parsing. У Dojo есть экспериментальный анализатор XML-анализатора клиента

0
ответ дан 3 December 2019 в 17:58
поделиться

Обязательно ли использовать XML?

Я обнаружил, что мой собственный текстовый формат намного быстрее, чем XML или JSON с любым из готовых пакетов - они были быстрыми, но, управляя моим собственным форматом и просто выполняя разбор строк, я смог сократить время вдвое по сравнению с самой быстрой реализацией XML.

Очевидно, что это работает, только если вы полностью контролируете форматы, и может не подходить для вашей ситуации, но для всех остальных в этой ситуации: не думайте, что XML - это абсолютно самый быстрый вариант, который у вас есть. Это не так.

-1
ответ дан 3 December 2019 в 17:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: