选择一个 XML 元素,忽略元素名称,打印换行符



我想选择第一个元素,但在输出中忽略它的名称。

这是我从每个输入 xml 文件中请求第一个 url 元素后得到的:

% xmllint 
 --xpath '(//yandexsearch/response/results/grouping/group/doc/url)[1]' 
 *.response.ya.xml
<url>https://example.com/</url><url>https://example.net/</url><url>https://example.org/</url>

但这就是我想要的:

https://example.com/
https://example.net/
https://example.org/

请注意,这个想法是从每个输入Yandex中选择第一个<url>元素的值.XML(Я感觉幸运)。

如何使用 xpath 执行此操作?

我最终使用 awk 删除<url></url>,并将每个元素的文本打印在单独的行上,忽略所有空行:

xmllint 
--xpath '(//yandexsearch/response/results/grouping/group/doc/url)[1]' 
| awk -F'</?url>' '{for(i=2;i<=NF;i++) if ($i != "") print $i}'

试试:

//yandexsearch/response/results/grouping/group/doc[1])/url/text()

XPath 通常只选择节点,您将在围绕 xpath 提取的代码中进行串联。

话虽如此,XPath 2.0 可以,如果可用的话:

string-join(//yandexsearch/response/results/grouping/group/doc[1])/url/text(), ' n')

此外,此答案还提供了几个基于 XSLT 的解决方案。

相关内容

  • 没有找到相关文章

最新更新