Grep инструмент для XML [закрыто]

22

Я ищу хороший инструмент для выполнения grep-подобных операций над XML - например, извлечение только определенных атрибутов.

Grep Сам по себе не может с этим справиться - любой эквивалентный DFA инструмент может обрабатывать только нерекурсивные совпадения, а мой может быть рекурсивным.

Я попробовал xgrep , но он довольно нестабилен, и я хочу стабильный и надежный инструмент.

Любые рекомендации?

РЕДАКТИРОВАТЬ: Я предпочитаю инструменты с открытым исходным кодом, которые хорошо работают под Linux.

Адам Матан
источник

Ответы:

21

XMLStarlet (Википедия) - это инструмент командной строки, который очень близок к grep. Это программное обеспечение с открытым исходным кодом (лицензия MIT) и хорошо работает на Linux и Windows.

Веб-сайт XMLStarlet описывает это следующим образом.

XMLStarlet - это набор утилит командной строки (инструментов), которые можно использовать для преобразования, запроса, проверки и редактирования документов и файлов XML, используя простой набор команд оболочки, аналогично тому, как это делается для простых текстовых файлов с использованием UNIX grep, sed, команды awk, diff, patch, join и т. д.

Пакет Debian / Ubuntu называется xmlstarlet. Но будьте осторожны: вопреки тому, что написано на man-странице, двоичный файл назван xmlstarletв Debian / Ubuntu, а не xml.

Есть также двоичные файлы Windows на SourceForge.

Небольшое введение смотрите в разделе IBM Start, работающем с XMLStarlet .

Людвиг Вайнцерль
источник
Удалить косую черту из первой ссылки.
Бккбрад
Я не могу заставить его работать ... Он никогда не совпадает ни с одним xpath, кроме '/' (весь документ), что довольно бесполезно :(
Хенди Ираван
@HendyIrawan - Вы уверены, что это не то, как вы пытаетесь использовать xpath? (Как будто у вашего XML есть пространство имен по умолчанию, которое вы не учитываете?)
Даниэль Хейли,
Я пытался его клонировать, но похоже, что хранилище сломано.
Hola Soy Edu Feliz Navidad
5

XPath синтаксис на разных языках лучше всего для поиска вещей в XML. Фактически, одним из инструментов, рекомендуемых создателями xgrep, является в основном Perl XML-парсер, который принимает ввод XPath.

jweede
источник
5

Инструмент, который работает под Linux - это xml_grep . Он полностью понимает XML и не является построчным инструментом.

xml_grep включен как отдельный инструмент в пакет XML :: Twig . Функциональность grepping довольно мощная, поскольку она поддерживает спецификации XPath .

Пример командной строки (извлечение сообщений, отредактированных после середины февраля, из дампа данных триологии ):

xml_grep -p --cond="row[@LastEditDate>'2010-02-14']"  posts.xml  > lateEditedPosts.xml

Установка проста. Или

  • sudo cpan -i "XML::Twig", как описано в кулинарной книге xml_grep, указанной ниже.

или


Больше информации:

Лучшее введение, которое я нашел для xml_grep - это кулинарная книга xml_grep , около двух страниц. Другие:

Питер Мортенсен
источник
Я исправил неработающую ссылку, но ссылка на дамп данных также не работает. Я посмотрю что я могу сделать.
Питер Мортенсен
0

XMLSpy - удивительный инструмент, хотя и немного затратный.

JP Alioto
источник
0

Я бы посоветовал НЕ использовать grep-подобный инструмент для XML, но использовать библиотеку для анализа XML вместо него.
Для чего именно это нужно? Любой язык программирования? Я думаю, что встроенный синтаксический анализатор XML .NET легко подойдет, если вы захотите написать для него программу.

Обновление : для Linux хорошо известной библиотекой XML-анализатора является libxml2 .

fretje
источник