xmllint 只选择第一个元素

xmllint only selects first element

我想将具有 xmllint 的每个 <id> 元素的文本提取到一个文本文件中。

<rss>
    <channel>
        <item>
            <id>111</id>
            <description>text 1</description>
        </item>
        <item>
            <id>222</id>
            <description>text 2</description>
        </item>
        <item>
            <id>333</id>
            <description>text 3</description>
        </item>
    </channel>
</rss>

文本文件中的每个元素都应单独占一行,如下所示:

111
222
333

我已经无法选择所有元素了。出于某种原因,我的 xmllint 命令仅 returns 第一个元素。

xmllint test.xml --xpath "string(//id)"

我已经尝试了很多 --xpath 语句的变体,但似乎无法弄清楚。

(我不知道它是否相关,但我在 OS X 上使用 xmllint

xmllint --shell test.xml <<< echo 'cat //id/text()' > out.txt