Вывод содержимого элемента xml в командной строке?

Всем доброго времени суток.

Суть в следующем. Есть некий xml-документ следующего вида (исходный документ тут):
f378f3d6e07c1ffd50aca6be3185a5e7.png

Задача. Вывести содержимое элемента (например, элемента productKey) в текстовом виде при помощи утилиты xmlstarlet в командную строку (изначально windows, но синтаксис команд linux-версии xmlstarlet не отличается).
Документацию читал, данную тему гуглил. Однако ответа в явном виде не нашёл.

Интересует конечный вид команды:
Microsoft Windows [Version 6.1.7601]

© Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.


C:\Users\User\Desktop\XML>xml.exe sel ??? document.xml

A1B2C3D4


Полагаю что данная задача решается xmlstarlet с использованием XPath, однако подойдут и любые другие способы.
  • Вопрос задан
  • 5769 просмотров
Решения вопроса 1
Antelle
@Antelle
А у вас там xmlns, поэтому xmlstarlet «не видит» тег внутри. Поэтому только так:
$ xmlstarlet sel -t -v "//*[name()='productKey']" document.xml
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@cat_crash
А почему бы не использовать xsltproc + xslt файлик?
Ответ написан
@v_m_smith
лучше бы я пил и курил
Если искомый элемент имеет без префикса, т.е. принадлежит xmlns - default namespace, то таким элементам можно подставлять "_" вместо префикса нэймспейса

$ xmlstarlet sel -t -v "//_:productKey" document.xml


У парсера есть кстати полезная опция -D, показывает сгенеренный XSLT код, которым он собирается получать данные.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы