【发布时间】:2012-05-20 01:59:45
【问题描述】:
我正在编写一个使用 xmllint 解析 rss 的小脚本。
现在我使用以下命令获取标题列表:
ITEMS=`echo "cat //title" | xmllint --shell rss.xml `
echo $ITEMS > tmpfile
但它返回:
<title>xxx</title> ------- <title>yyy :)</title> ------- <title>zzzzzz</title>
没有换行符或空格。 现在我只对标题标签的文本内容感兴趣,如果可能的话,我想使用 for/while 循环浏览标题,例如:
for val in $ITEMS
do
echo $val
done
如何做到这一点? 提前致谢
【问题讨论】:
-
不要成为受虐狂,使用脚本语言,如 python、ruby、世界上任何其他语言、perl(按优先顺序:P)
-
@KurzedMetal 你可以在 bash 中进行大量的解析、拆分和迭代。
-
你会发现引用你的变量会有很大帮助:
for val in "$ITEMS"; do echo "$val"; done -
谢谢,它可能会有所帮助,但如果我尝试这样做,“$val”包含整个字符串并且循环只运行一次,但它会使用正确的换行符打印 $val。我需要逐行阅读 $ITEMS,我该怎么做?
-
xmllint --xpath '//title/text()' rss.xml有问题吗?
标签: xml bash parsing xml-parsing xmllint