使用xmllint从1个元素中获取几个xml属性

时间:2018-10-01 22:38:10

标签: xml bash

我有一些XML代码,可以通过curl获得。对于管道和xmllint,我想从标签set获取属性sunecho 'cat //sun/@rise|//sun/@set' | xmllint --shell xmlList.txt的值,并且其格式应类似于2018-10-01T07:02:40。 我尝试了两种方法(在此示例中,我使用file-xmlList.txt进行了简化):

1

输入:

/ > ------- rise="2018-09-30T19:26:30" ------- set="2018-10-01T07:02:40" / >

输出

xmllint --xpath 'string (//sun/@set) and string (//sun/@rise)' xmlList.txt

2

输入:

`true`

输出

<?xml version="1.0" encoding="UTF-8"?>
<current>
<city id="2118647" name="Petropavlovsk-Kamchatsky">
<coord lon="158.65" lat="53.02"></coord>
<country>RU</country>
<sun rise="2018-09-30T19:26:30" set="2018-10-01T07:02:40"></sun>
</city>
<temperature value="282.15" min="282.15" max="282.15" unit="kelvin"></temperature>
<humidity value="100" unit="%"></humidity>
<pressure value="992" unit="hPa"></pressure>
<wind>
<speed value="2" name="Light breeze"></speed>
<gusts></gusts>
<direction value="210" code="SSW" name="South-southwest"></direction> 
</wind>
<clouds value="92" name="overcast clouds"></clouds>
<visibility value="10000"></visibility>
<precipitation value="0.39" mode="rain" unit="3h"></precipitation>
<weather number="500" value="light rain" icon="10n"></weather>
<lastupdate value="2018-10-01T09:00:00"></lastupdate>
</current>

有人可以告诉我如何获取这种格式的值 文件xmlList.txt-

{{1}}

1 个答案:

答案 0 :(得分:0)

下面的XPath应该返回用逗号分隔的值。其他输出格式也应该可行

xmllint --xpath 'concat(//sun/@rise,",",//sun/@set)' test.xml

输出:

2018-09-30T19:26:30,2018-10-01T07:02:40

要用换行符分隔值:

xmllint --xpath 'concat(//sun/@rise,"|",//sun/@set)' test.xml | tr '|' '\n'