Iva*_*van 1 xml bash parsing xml-parsing xmllint
我正在编写一个使用 xmllint 解析 rss 的小脚本。
现在我使用以下命令获取标题列表:
ITEMS=`echo "cat //title" | xmllint --shell rss.xml `
echo $ITEMS > tmpfile
Run Code Online (Sandbox Code Playgroud)
但它返回:
<title>xxx</title> ------- <title>yyy :)</title> ------- <title>zzzzzz</title>
Run Code Online (Sandbox Code Playgroud)
没有换行符或空格。现在我只对标题标签的文本内容感兴趣,如果可能的话,我想使用 for/while 循环浏览标题,例如:
for val in $ITEMS
do
echo $val
done
Run Code Online (Sandbox Code Playgroud)
怎么做?提前致谢
我在某些时候有相同类型的要求来解析 bash 中的 xml。我最终使用了 xmlstarlet http://xmlstar.sourceforge.net/,您可以安装它。
如果没有,类似的东西将删除周围的标签:
echo "cat //title/text()" | xmllint --shell rss.xml
Run Code Online (Sandbox Code Playgroud)
然后你需要在管道输出后清理输出,一个基本的解决方案是:
echo "cat //title/text()" | xmllint --shell rss.xml | egrep '^\w'
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助