2015-10-03 7 views
1

У меня есть xml-файл, который я хотел бы получить значение filePath и сохранить его как переменную, используемую для запуска приложения. Вот файл XML:bash script для чтения и хранения значения xml

<?xml version="1.0"?> 
<resultset statement="SELECT * FROM dms.gamThr_exp 
" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <row> 
    <field name="id">1</field> 
    <field name="filePath">/home/drs/Videos/Game.of.Thrones/Game.of.Thrones.S01E01.mkv</field> 
</row> 
</resultset> 

Я кусочкам этот сценарий вместе, но он не работает:

#!/bin/bash 
myvar=$(echo 'cat //row/field[@name="filePath"]/@value' | xmllint --shell /home/drs/dms/gamThr.xml | awk -F'[="]' '{print $(NF-1)}') 
vlc --fullscreen "$myvar" 

любая помощь в получении этой работы будет весьма признателен!

+0

Использовать XML-парсер (xmls) tarlet, xmllint, ...). – Cyrus

ответ

0

Чтобы выбрать текстовый узел контекстного узла, используйте тест text() узла:

//row/field[@name="filePath"]/text() 

Используйте --xpath вариант xmllint передать XPath:

xmllint --xpath '//row/field[@name="filePath"]/text()' /home/drs/dms/gamThr.xml 

Наконец ваш скрипт должен выглядеть например:

#!/bin/bash 

myvar=$(xmllint --xpath '//row/field[@name="filePath"]/text()' /home/drs/dms/gamThr.xml) 
vlc --fullscreen "$myvar" 
+1

, который работает !!! Огромное спасибо. – drs