2013-02-19 4 views
3

Возможно ли (и если да, как) с xml_grep получить значение определенного атрибута из определенного элемента? Мне кажется, что я могу выводить информацию между тегами.xml_grep получить атрибут от элемента

пример:

<eid> 
     <identity nationalnumber="13021912354" dateofbirth="20130219" gender="male"> 
      <name>Menten</name> 
      <firstname>Kasper</firstname> 
      <middlenames>Marie J</middlenames> 
      <nationality>Belg</nationality> 
      <placeofbirth>Sint-Truiden</placeofbirth> 
      <photo>base64-string</photo> 
     </identity> 
    </eid> 

выходное значение (в данном случае: 13021912354) из 'nationalnumber'-атрибута из' identity'-элемента

ответ

5

С xmllint:

xmllint --xpath 'string(//identity/@nationalnumber)' file.xml 

Для дебианского дистрибутива (или производных) xmllint является частью пакета libxml2-utils и может быть установлен так:

apt-get install libxml2-utils

+1

большое спасибо, это было именно то, что я искал! – sarkasper

+0

Для меня это работало только тогда, когда я использовал ответ, приведенный здесь: http://stackoverflow.com/a/11906002/1306012 –

+0

@ gilles-quenot Для нескольких '' в одном файле, если я хочу извлечь 'dateofbirth ' 'для конкретного' nationalnumber' ..... как я должен это достичь? –

2

Версия xmllint, что я установил на RHEL6.3, кажется, не имеет эту магию --xpath вариант. Какая версия xmllint поддерживает эту опцию?

+0

xmllint: использование версии libxml 20800 – sarkasper