Парсинг 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 парсер. Не могу говорить на других языках).
поддержка 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, я думаю, что это лучший выбор.