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

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

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

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

Какие-либо рекомендации?

Править: Я предпочитаю инструменты с открытым исходным кодом, которые работают хорошо в соответствии с Linux.

22
задан 05.08.2009, 17:18

5 ответов

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

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

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

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

На SourceForge существуют также двоичные файлы Windows.

Для миленького введения посмотрите, что Запуск IBM работает с XMLStarlet.

21
ответ дан 07.12.2019, 09:57

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

5
ответ дан 07.12.2019, 09:57

XMLSpy является удивительным инструментом, если немного spendy.

0
ответ дан 07.12.2019, 09:57

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

Обновление: для Linux известная библиотека синтаксического анализатора XML является libxml2.

0
ответ дан 07.12.2019, 09:57

Инструмент, который работает в соответствии с Linux, является xml_grep. Это полностью понимает XML и не линию за линией инструмент.

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

Демонстрационная командная строка (извлекающий сообщения, отредактированные с середины февраля от triology Дампа Данных):

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

Установка легка. Также

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

или


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

Лучшее введение, которое я нашел для xml_grep, является xml_grep поваренной книгой, приблизительно две страницы.Другое:

5
ответ дан 07.12.2019, 09:57

Теги

Похожие вопросы