LINUX.ORG.RU

Достать значение из xml файла


0

1

на входе есть вот такой xml файл:

<packages>
<past>indigo/SR2</past>
<past>juno/SR2</past>
<present>kepler/SR1</present>
<future>luna/M2</future>
</packages>

Необходимо получить значение тега <present>, в данном случае надо получить на выходе kepler/SR1.

Как это лучше сделать?

Есть какие то утилиты для разбора xml?

Или смотреть на этот файл как на обычный текст?

Подскажите, пожалуйста, возможные решения.

Спасибо.

Ответ на: комментарий от TDrive
grep -oPm1 "(?<=<present>)[^<]+" "file_name"

вот такая строка возвращает требуемое значение.

Самое смешное, что я ее чисто случайно нагуглил и смотрю на нее как на какой то рандомный набор символов :))

underW ()
Ответ на: комментарий от underW
 ~ > cat - > 1.xml
<packages>
<past>indigo/SR2</past>
<past>juno/SR2</past>
<present>kepler/SR1</present>
<future>luna/M2</future>
</packages>
 ~ > xmllint --xpath '//present/text()' 1.xml
kepler/SR1
mix_mix ★★★★★ ()
Ответ на: комментарий от underW

Ты забыл в пути указать корневой тег (который конечно же есть, но ты его не написал). В общем, xpath должен быть полным.

i-rinat ★★★★★ ()
Ответ на: комментарий от underW

Парсить xml регулярными выражениями плохая идея, есть специализированные более удобные средства. Но если цель просто чтоб работало то можно и так.

TDrive ★★★★★ ()
Ответ на: комментарий от TDrive

TDrive, была бы цель:

просто чтоб работало

- я бы не регистрировался не этом форуме и не задавал бы тупых вопросов.

А какие специализированны средства для работы с xml Вы могли бы посоветовать, кроме xmllint конечно?

underW ()
Ответ на: комментарий от mix_mix

ух, оказывается, на Ubuntu 13.10 по умолчанию xmllint не установлен. а вот, на Ubuntu 10.10 есть.

Теперь у меня вопрос: Какие дефолтные инструменты для работы с xml идут в Ubuntu 13.10?

underW ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.