Разбор XML - правильные скриптовые языки / пакеты для работы? - PullRequest
9 голосов
/ 23 октября 2009

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

Спасибо!

ОБНОВЛЕНИЕ: я закончил с XML :: Simple, который хорошо поработал, но у меня есть один совет, если вы планируете его использовать - сначала изучите опцию forcearray. Мне пришлось переписать кучу утверждений после того, как я узнал, что обычно - лучшая практика для установки forcearray. На этой странице было самое ясное объяснение, которое я смог найти. Честно говоря, я удивлен, что это не стандартное поведение.

Ответы [ 12 ]

10 голосов
/ 23 октября 2009

Если вы используете Perl, то я бы рекомендовал XML :: Simple :

Поскольку все больше и больше веб-сайтов начинают использовать XML для их содержания, это становится все более важным для веба разработчики знают, как разбирать XML данные и преобразовать его в разные форматы. Вот где модуль Perl называется XML :: Simple. Требуется избавиться от рутинного анализа XML-данных, делая процесс проще, чем вы когда-либо казалось возможным.

10 голосов
/ 23 октября 2009

XML :: Twig очень хорош, особенно потому, что он не настолько многословен, как некоторые другие варианты.

7 голосов
/ 23 октября 2009

Для чистого синтаксического анализа XML я бы не использовал Java, C #, C ++, C и т. Д. Они имеют тенденцию слишком усложнять вещи, так как вы хотите банан и получаете гориллу вместе с ним.

Более подходящие и интерпретируемые языки, такие как Perl, PHP, Python, Groovy, являются более подходящими. Perl входит практически в каждый дистрибутив Linux, как и PHP в большинстве случаев.

Я недавно использовал Groovy для этого, и мне было очень легко. Имейте в виду, что синтаксический анализатор C будет, например, на несколько порядков быстрее Groovy.

6 голосов
/ 23 октября 2009

Все это будет в библиотеках.

В Python есть отличные библиотеки для XML. Я предпочитаю lxml . Он использует libxml / libxslt, поэтому он быстрый, но привязка Python делает его действительно простым в использовании. Perl вполне может иметь одинаково классные библиотеки OO.

4 голосов
/ 23 октября 2009

Я видел, что люди рекомендуют XML :: Simple, если вы выбираете Perl.

Хотя XML :: Simple действительно очень прост в использовании и великолепен, он является анализатором DOM. Таким образом, он, к сожалению, совершенно не подходит для обработки больших файлов XML, так как вашему процессу не хватило бы памяти (это общая проблема для любого анализатора DOM , не ограничиваясь XML :: Simple или Perl).

Таким образом, для больших файлов вы должны выбрать парсер SAX на любом языке, который вы выберете (в Perl есть много парсеров XML SAX, или использовать другой потоковый парсер, такой как XML :: Twig, который даже лучше, чем стандартный парсер SAX. не говорю на других языках).

3 голосов
/ 23 октября 2009

Поддержка XML в Scala довольно хорошая, тем более что XML можно просто вводить непосредственно в программы Scala.

Microsoft также сделала несколько интересных интегрированных вещей с помощью LINQ для XML

Но мне действительно нравится Elementtree , и только этот пакет является хорошей причиной для использования Python вместо Perl;)

Вот пример:

import elementtree.ElementTree as ET

# build a tree structure
root = ET.Element("html")

head = ET.SubElement(root, "head")

title = ET.SubElement(head, "title")
title.text = "Page Title"

body = ET.SubElement(root, "body")
body.set("bgcolor", "#ffffff")

body.text = "Hello, World!"

# wrap it in an ElementTree instance, and save as XML
tree = ET.ElementTree(root)
tree.write("page.xhtml")
3 голосов
/ 23 октября 2009

Не совсем язык сценариев, но вы также можете рассмотреть Scala . Вы можете начать с здесь .

2 голосов
/ 23 октября 2009

Это не язык сценариев, но Scala отлично подходит для естественной работы с XML . Также см. Эту книгу (черновик) Бурака .

1 голос
/ 27 октября 2009

Если вы собираетесь использовать Ruby , чтобы сделать это, то вам нужно взглянуть на Nokogiri или Hpricot . Оба имеют свои сильные и слабые стороны. Выбор языка и пакета действительно сводится к тому, что вы хотите сделать с данными после их анализа.

1 голос
/ 23 октября 2009

Python имеет довольно хорошую поддержку XML. От стандартных библиотечных пакетов DOM до гораздо более «питонических» библиотек, которые анализируют XML напрямую в более удобные для использования структуры объектов.

Хотя на самом деле не существует «правильного» языка ... в настоящее время существуют хорошие XML-пакеты для большинства языков.

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