使用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))
逻辑说明
- 解析XML结构,定位所有
user节点; - 从第一个
user节点的子标签生成CSV表头; - 遍历每个
user节点时,只收集非空、非空白的标签文本; - 用逗号拼接表头和每行有效数据,自动跳过空标签对应的位置,避免产生多余逗号。
内容的提问来源于stack exchange,提问作者trz
相关产品推荐
相关产品推荐

