Bash:
Работа с XML

Как это сделать:

Вот как разобрать XML в Bash. Инструменты? xmllint и xmlstarlet. Циклическое прохождение через элементы XML? Безусловно. Пример с примером вывода:

# Предполагаем, что xmlstarlet установлен
# Установить при помощи: apt-get install xmlstarlet

# Разбор содержимого XML
cat <<EOF > sample.xml
<fruits>
  <fruit name="Apple"/>
  <fruit name="Banana"/>
</fruits>
EOF

# Извлечение имен при помощи xmlstarlet
xmlstarlet sel -t -m "//fruit" -v "@name" -n sample.xml

# Вывод должен быть:
# Apple
# Banana

Глубокое погружение

В 90-х годах XML появился как более простая альтернатива SGML, но более структурированная, чем HTML. Теперь у него есть компания – например, JSON, YAML. Но XML все еще на коне, особенно в конфигурациях и веб-сервисах, основанных на SOAP.

Что касается инструментария, xmllint удобен для валидации XML, запросов xpath. xmlstarlet - это швейцарский нож для шалостей с XML – запросы, редактирование, валидация, трансформация. В bash-скриптах они являются супергероями для задач по XML.

Под капотом у xmllint используется libxml2 – C-парсер XML. Он быстрый, но сообщения об ошибках? Загадочные. А xmlstarlet? Рекурсивные шаблоны и поддержка EXSLT. Головоломка, но мощная.

Смотрите также