Как проанализировать XML в Bash?

Я сделал следующие вещи и запустил свой проект на Laravel 5.6-dev:

  • Следовал тому, что Патрик предложил
  • ] Изменил fideloper / proxy на «~ 4.0» и добавил "minimum-stability": "dev", "prefer-stable": true в конец моего файла composer.json.

128
задан Steven Penny 29 May 2014 в 03:30
поделиться

5 ответов

Я не знаю ни одного инструмента синтаксического анализа XML в чистом виде. Так что вам, скорее всего, понадобится инструмент, написанный на другом языке.

Мой модуль XML :: Twig Perl поставляется с таким инструментом: xml_grep , где вы, вероятно, напишете то, что хотите, как xml_grep -t '/ html / head / title' xhtmlfile.xhtml> titleOfXHTMLPage.txt (параметр -t дает результат в виде текста вместо xml)

4
ответ дан 24 November 2019 в 00:35
поделиться

Ну, вы можете использовать утилиту xpath. Я предполагаю, что Perl XML :: Xpath содержит его.

2
ответ дан 24 November 2019 в 00:35
поделиться

Инструменты командной строки, которые можно вызывать из сценариев оболочки, включают:

  • 4xpath - оболочка командной строки для пакета Python 4Suite
  • XMLStarlet
  • xpath - оболочка командной строки для библиотеки Perl XPath
  • Xidel - Работает как с URL-адресами, так и с файлами. Также работает с JSON

. Я также использую xmllint и xsltproc с небольшими сценариями преобразования XSL для обработки XML из командной строки или в сценариях оболочки.

54
ответ дан 24 November 2019 в 00:35
поделиться

Взгляните на XML2 из http://www.ofb.net/~egnor/xml2/ , который преобразует XML в строчно-ориентированный формат. .

5
ответ дан 24 November 2019 в 00:35
поделиться

Вы можете сделать это очень легко, используя только bash. Вам нужно только добавить эту функцию:

rdom () { local IFS=\> ; read -d \< E C ;}

Теперь вы можете использовать rdom как read, но для html-документов. При вызове rdom присваивает элемент в переменную E, а содержимое - в переменную C.

Например, чтобы сделать то, что вы хотели:

while rdom; do
    if [[ $E = title ]]; then
        echo $C
        exit
    fi
done < xhtmlfile.xhtml > titleOfXHTMLPage.txt
59
ответ дан 24 November 2019 в 00:35
поделиться