разобрать xml с помощью xmllint

У меня есть файл xml, как показано ниже. Я хочу использовать xmllint для его анализа таким образом, чтобы, если категория «SciFi», он отображал номер «isbn».

Немного потрудившись, я смог понять, как напечатать только категорию или только номер isbn; но не могу понять, как добавить условие.

<book>
 <name>
  <category>SciFi</category>
  <isbn>12345678</isbn>
 </name>
 <name>
  <category>Mystery</category>
  <isbn>23456789</isbn>
 </name>
<book>

Изменить: версия xmlint, которая у меня есть, не поддерживает xpath

Я сделал ошибку в своем исходном сообщении; исправлен xml выше

xmllint --version produces

xmllint: using libxml version 20626

Я использую следующие команды для печати информации

cat /book/name[1]/category
cat /book/name[2]/category

cat /book/name[1]/isbn
cat /book/name[2]/isbn

person souser    schedule 09.03.2013    source источник
comment
Почему бы не перейти на более новую версию (или даже другую программу), которая поддерживает xpath?   -  person BeniBela    schedule 09.03.2013
comment
И как мне объяснить это команде поддержки, чтобы она установила его на более чем 1000 серверов Linux?   -  person souser    schedule 09.03.2013
comment
Какую версию xmlint вы используете и как вы печатаете только category или isbn?   -  person Daniel Haley    schedule 10.03.2013
comment
Я обновил свой пост соответственно.   -  person souser    schedule 11.03.2013


Ответы (1)


Это звучит как плохой инструмент для этой цели. Если у вас установлен xmlint, есть ли у вас xsltproc? Это было бы более полезно, я думаю.

Кроме того, просто чтобы убедиться, вы пробовали cat /book/name[category='SciFi']/isbn ?

person Mike Sokolov    schedule 11.03.2013