Обработка XML данных в командной строке при помощи xmlstarlet
В составе Debian, Ubuntu и других Linux дистрибутивах можно найти пакет xmlstarlet (http://xmlstar.sourceforge.net/),
представляющий собой набор утилит командной строки для преобразования, выборки данных и проверки XML документов.
Реализует для работы с XML функции похожие на утилиты grep, tr, sed, awk, diff, patch, join и т.п.,
что очень удобно для разбора XML документов в скриптах.
Например, для парсинга RSS и вывода заголовков можно использовать:
curl url_rss | xmlstarlet sel -t -m /rss/channel/item -v title -n
вывод из RSS ссылки и заголовка, разделенные символом "|"
curl url_rss | xmlstarlet sel -t -m /rss/channel/item -v link -o "|" -v title -n
Для ленты в формате Atom, с построчным разделением URL от заголовка:
curl url_rss | sed 's/xmlns=/_xmlns=/'| xmlstarlet sel -t -m /feed/entry -v link/@href -n -v title -n
Опция -t информирует о начале задания шаблона, определенного далее идущими директивами.
-m указывает, параметры XPath выборки, в нашем случае, обработка всех
-v - определяем содержимое какого поля выводить.
-n - инициирует вывод символа перевода строки,
-o - позволяет вывести произвольный текст.
Быстрый просмотр текста в ODT файле
unzip -p document.odt content.xml | xmlstarlet sel -N text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" \
-T -t -m '//text:p' -v . -n
Построить список изображений, используемых в заданной странице:
cat test.html| xmlstarlet sel --html -t -m "//img" -v "@src" -n
Примеры использования xmlstarlet для различных ситуаций можно найти в директории /usr/share/doc/xmlstarlet/examples
Комментариев нет:
Отправить комментарий