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

使用XQuery实现XML转CSV:空标签不生成多余逗号

将XML转换为不含空标签逗号的CSV格式

需求说明

需将指定XML转换为CSV格式,核心要求:XML中的空标签对应CSV位置不添加多余逗号。

示例XML:

<data>
<user>
<id>1</id>
<name>jaison</name>
<age>21</age>
</user>
<user>
<id>2</id>
<name>Monson</name>
<age></age>
</user>
</data>

期望输出CSV:

id,name,age
1,jaison,21
2,Monson

解决方案(Python实现)

使用Python内置的xml.etree.ElementTree模块解析XML,按规则生成符合要求的CSV内容:

import xml.etree.ElementTree as ET

# 解析XML内容(也可通过ET.parse读取本地文件)
xml_content = """
<data>
<user>
<id>1</id>
<name>jaison</name>
<age>21</age>
</user>
<user>
<id>2</id>
<name>Monson</name>
<age></age>
</user>
</data>
"""
root = ET.fromstring(xml_content)

# 提取CSV表头(从第一个user节点的子标签名获取)
headers = [child.tag for child in root.find('user')]
print(','.join(headers))

# 遍历处理每个user节点
for user in root.findall('user'):
    row_values = []
    for header in headers:
        tag_text = user.find(header).text
        # 仅保留非空且非空白的文本值
        if tag_text is not None and tag_text.strip():
            row_values.append(tag_text)
    print(','.join(row_values))

逻辑说明

  1. 解析XML结构,定位所有user节点;
  2. 从第一个user节点的子标签生成CSV表头;
  3. 遍历每个user节点时,只收集非空、非空白的标签文本;
  4. 用逗号拼接表头和每行有效数据,自动跳过空标签对应的位置,避免产生多余逗号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 01:20:02