You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过xmllint将XML转换为每行对应单个item的汇总CSV文件?

问题:用xmllint直接将XML转换为每行对应item的CSV格式

原始XML内容

<items>
   <item>
     <id>abc123</id>
     <name>widget</name>
     <quantity>1.0</quantity>
   </item>
   <item>
     <id>def456</id>
     <name>sprocket</name>
     <quantity>6.0</quantity>
   </item>
   <item>
     <id>ghi789</id>
     <name>gear</name>
     <quantity>11.0</quantity>
   </item>
</items>

期望的CSV输出

abc123,widget,1.0
def456,sprocket,6.0
ghi789,gear,11.0

尝试的命令及问题

执行以下xmllint命令:

xmllint --xpath '//item/id/text()|//item/name/text()|//item/quantity/text()' input.xml

输出结果为每个字段单独一行,无法直接得到每行对应一个item的CSV格式:

abc123
widget
1.0
def456
sprocket
6.0
ghi789
gear
11.0
解决方案

可以直接通过xmllint实现需求,无需额外脚本处理,使用以下命令:

xmllint --noent --xpath '//item/concat(id/text(), ",", name/text(), ",", quantity/text(), "&#10;")' input.xml

命令说明:

  • --noent:启用XML实体解析,将表达式中的&#10;转换为实际的换行符
  • XPath表达式//item/concat(...):遍历每个<item>节点,将其下的id、name、quantity文本值用逗号拼接,最后添加换行符,确保每个item的内容单独占一行

如果字段中包含逗号、引号等特殊字符,这个基础方法无法处理转义,但针对当前需求的场景可以完美输出目标CSV格式。

内容的提问来源于stack exchange,提问作者Joshua Davies

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 09:23:13