Введение
Большое спасибо за предыдущие ответы. Заголовок вопроса очень неоднозначный, так как вопросник спрашивает о том, как проанализировать xml
, когда то, что на самом деле хочет проанализировать вопросник xhtml
, говорить о неоднозначности. Хотя они похожи, они определенно не одинаковы. И поскольку xml
и xhtml
не одно и то же, было очень трудно найти решение, которое точно соответствовало бы тому, что запрашивала анкета. Однако я надеюсь, что решение, приведенное ниже, все же подойдет. Хочу признаться, я не мог узнать, как искать именно для /html/head/title
. Теперь, когда об этом написано, я хочу сказать, что я не удовлетворен ранее полученными ответами, так как некоторые из ответчиков без необходимости заново изобретают колесо , когда в анкете не говорилось, что скачивать пакет запрещено . Я не понимаю ненужного кодирования вообще. Я специально хочу повторить то, что человек в этой теме уже сказал: просто потому, что вы можете написать свой собственный парсер, не значит, что вы должны - @Stephen Niedzielski. Относительно программирования: самый простой и кратчайший путь - это правило, которое предпочитают, никогда не делайте ничего более сложного, чем когда-либо необходимо. Решение было протестировано с хорошим результатом на Windows 10> Подсистема Windows для Linux> Ubuntu . Возможно, если будет существовать и выбран другой элемент title
, это будет плохой результат, извините за такую возможность. Пример: если теги <body>
предшествуют тегам <head>
, а теги <body>
содержат тег <title>
, но это очень, очень маловероятно.
TLDR / решение
Об общем пути для решения, спасибо @Grisha, @Nat, Как разобрать XML в Bash?
За удаление тегов XML, спасибо @Johnsyweb, Как удалить теги XML из командной строки Unix?
1. Установить «пакет» xmlstarlet
2. Выполнить в bash xmlstarlet sel -t -m "//_:title" -c . -n xhtmlfile.xhtml | head -1 | sed -e 's/<[^>]*>//g' > titleOfXHTMLPage.txt