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

如何用xmlstarlet将带命名空间的XML转换为CSV?

问题解决:XMLStarlet转换带命名空间的XML为CSV

错误原因分析

你的命令无效主要有两个核心问题:

  1. 未处理XML默认命名空间:你的XML根节点声明了xmlns="http://ws_export.ws.localhost/",这意味着所有子元素(Records、item、CodIO等)都属于这个命名空间,XPath必须显式指定命名空间才能匹配到这些元素。
  2. XPath路径错误:XML的根节点是<ws_export>,而非<Records>,原命令的/Records/item路径无法定位到任何节点。

修正后的命令(推荐方式)

使用-N参数绑定命名空间前缀,在XPath中通过前缀引用命名空间内的元素:

xmlstarlet \
    sel -T -t \
    -N ns="http://ws_export.ws.localhost/" \
    -m /ns:ws_export/ns:Records/ns:item \
    -v "concat(ns:CodIO,';',ns:DescIO)" \
    -n test.xml > test.csv

另一种临时方案(不推荐,易冲突)

如果不想绑定命名空间前缀,可以通过local-name()匹配元素名称:

xmlstarlet \
    sel -T -t \
    -m /*[local-name()='ws_export']/*[local-name()='Records']/*[local-name()='item'] \
    -v "concat(*[local-name()='CodIO'],';',*[local-name()='DescIO'])" \
    -n test.xml > test.csv

执行结果

修正后的命令会生成test.csv,内容为:

02360236;023608 SAP- Stazione

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 23:02:20