使用xmlstarlet提取数据

时间:2019-01-26 23:51:27

标签: xml linux bash xmlstarlet

我想使用xmlstarlet提取.xml文件的内容,并将其写入变量。

.xml文件是来自mediainfo的输出,例如,我想从Video中提取帧速率,问题是名称相同的标签(<BitRate>),唯一的区别是{{1 }}。

我想避免使用<track type="Video"></track>使用正则表达式方法,因为我认为程序更好,更易于处理。而且我想避免类似第二个BitRate条目的操作。它不是Bash脚本中的第一个,当然不是最后一个xml操作。

例如,信息的插入非常有用:

sed

这是来自mediainfo的典型XML输出:

xmlstarlet -q ed -L -P -u "/movie1/videoframerate" -v "123456 Kb/s" ./test.xml

1 个答案:

答案 0 :(得分:0)

您缺少使用-N的{​​{1}}参数来设置XML源的名称空间。因此,以下命令应根据需要设置值:

xmlstarlet

它将xmlstarlet -q ed -N mi="https://mediaarea.net/mediainfo" -u "/mi:MediaInfo/mi:media/mi:track[@type='Video']/mi:BitRate" -v "123456 Kb/s" test.xml BitRate中的@type='video'设置为“ 123456 Kb / s”。