Bash 脚本和 xml/rss 解析

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)

怎么做?提前致谢

Phi*_*ppe 5

我在某些时候有相同类型的要求来解析 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)

希望这可以帮助