Я ищу хороший инструмент для выполнения grep-подобных операций над XML - например, извлекать только определенные атрибуты.
Grep сам не может справиться с этим - любой эквивалентный DFA инструмент может обрабатывать только нерекурсивные совпадения, а мой может быть рекурсивным.
Я попробовал xgrep, но он довольно нестабилен, и я хочу стабильный и надежный инструмент.
Любые рекомендации?
РЕДАКТИРОВАТЬ: Я предпочитаю инструменты с открытым исходным кодом, которые хорошо работают под Linux.
XMLStarlet (Википедия) - это инструмент командной строки, который очень близок к grep. Это программное обеспечение с открытым исходным кодом (лицензия MIT) и хорошо работает на Linux и Windows.
XMLStarlet - это набор утилит командной строки (инструментов), которые можно использовать для преобразования, запроса, проверки и редактирования документов и файлов XML, используя простой набор команд оболочки, аналогично тому, как это делается для простых текстовых файлов с использованием UNIX grep, sed, команды awk, diff, patch, join и т. д.
Пакет Debian / Ubuntu называется xmlstarlet. Но будьте осторожны: вопреки тому, что написано на man-странице, двоичный файл назван xmlstarletв Debian / Ubuntu, а не xml.
Удалить косую черту из первой ссылки.
Bkkbrad 15 лет назад
0
Я не могу заставить его работать ... Он никогда не совпадает ни с одним xpath, кроме '/' (весь документ), что довольно бесполезно :(
Hendy Irawan 12 лет назад
0
@HendyIrawan - Вы уверены, что это не то, как вы пытаетесь использовать xpath? (Как ваш XML имеет пространство имен по умолчанию, которое вы не учитываете?)
Daniel Haley 12 лет назад
0
Я пытался его клонировать, но похоже, что хранилище сломано.
Hola Soy Edu Feliz Navidad 6 лет назад
0
5
jweede
XPath синтаксис на разных языках лучше всего для поиска вещей в XML. Фактически, одним из инструментов, рекомендованных создателями xgrep, является в основном анализатор Perl XML, который принимает ввод XPath.
5
Peter Mortensen
Инструмент, который работает под Linux - это xml_grep . Он полностью понимает XML и не является построчным инструментом.
xml_grep включен как автономный инструмент в пакет XML :: Twig . Функциональность grepping довольно мощная, поскольку она поддерживает спецификации XPath .
Пример командной строки (извлечение сообщений, отредактированных после середины февраля, из дампа данных триологии ):
Я исправил неработающую ссылку, но ссылка на дамп данных также не работает. Я посмотрю что я могу сделать.
Peter Mortensen 7 лет назад
0
0
fretje
Я бы посоветовал НЕ использовать grep-подобный инструмент для XML, но использовать библиотеку для анализа XML вместо него. Для чего именно это нужно? Любой язык программирования? Я думаю, что встроенный синтаксический анализатор .NET легко подойдет, если вы захотите написать для него программу.
Обновление : для Linux хорошо известная библиотека синтаксического анализатора XML - libxml2 .
0
JP Alioto
XMLSpy - удивительный инструмент, хотя и немного затратный.