Парсинг XML - право скриптовых языков / пакеты для работы?

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

спасибо!

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

12 ответов


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

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


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


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

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

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


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

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


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

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

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


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


поддержка 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")

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


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

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


Если вы собираетесь использовать Рубин чтобы сделать это, вы захотите взглянуть на nokogiri по или Hpricot. У обоих есть свои сильные и слабые стороны. Выбор языка и пакета действительно сводится к тому, что вы хотите сделать с данными после их анализа.


чтение данных из XML-файлов мертво легко с C# и LINQ в XML!

Как-то, хотя я действительно люблю python, мне было трудно анализировать XML со стандартными библиотеками.


Я бы сказал, что это зависит, как и все остальное. VB.NET 2008 использует XML-литералы, имеет IntelliSense для LINQ to XML и несколько игрушек питания, которые помогают превратить XML в xsd-схемы. Поэтому лично, если вы работаете в среде .NET, я думаю, что это лучший выбор.