我想使用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
答案 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”。