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

如何在XQuery中从字符串动态生成带元素和值的XML

动态生成列不固定的CSV转XML方案

需求说明

读取列数/表头不固定的文本文件(CSV格式,每条记录以换行分隔),将内容转换为字符串后,动态以表头列为元素生成对应的XML文件。

输入示例

第一组(4列)

ProductId,ProductName,Manufacturer,ProductPrice 
100,IPhone,Apple,$799 
101,Galaxy S25,Samsung,$899

第二组(5列,新增MFYear)

ProductId,ProductName,Manufacturer,ProductPrice,MFYear 
100,IPhone,Apple,$799,2024 
101,Galaxy S25,Samsung,$899,2025

输出XML示例

第一组对应XML

<Products>
  <Product>
    <ProductId>100</ProductId>
    <ProductName>IPhone</ProductName>
    <Manufacturer>Apple</Manufacturer>
    <ProductPrice>$799</ProductPrice>
  </Product>
  <Product>
    <ProductId>101</ProductId>
    <ProductName>Galaxy S25</ProductName>
    <Manufacturer>Samsung</Manufacturer>
    <ProductPrice>$899</ProductPrice>
  </Product>
</Products>

第二组对应XML

<Products>
  <Product>
    <ProductId>100</ProductId>
    <ProductName>IPhone</ProductName>
    <Manufacturer>Apple</Manufacturer>
    <ProductPrice>$799</ProductPrice>
    <MFYear>2024</MFYear>
  </Product>
  <Product>
    <ProductId>101</ProductId>
    <ProductName>Galaxy S25</ProductName>
    <Manufacturer>Samsung</Manufacturer>
    <ProductPrice>$899</ProductPrice>
    <MFYear>2025</MFYear>
  </Product>
</Products>

实现代码(Python)

以下代码可动态适配任意列数的CSV文件,核心逻辑是先提取表头,再逐行匹配表头生成XML元素:

def csv_to_dynamic_xml(csv_content):
    # 按换行拆分内容,过滤空行
    lines = [line.strip() for line in csv_content.split('\n') if line.strip()]
    if not lines:
        return ""
    
    # 提取表头和数据行
    headers = [h.strip() for h in lines[0].split(',')]
    data_rows = []
    for line in lines[1:]:
        data_rows.append([d.strip() for d in line.split(',')])
    
    # 构建XML
    xml = ['<Products>']
    for row in data_rows:
        xml.append('  <Product>')
        # 动态匹配表头和数据
        for header, value in zip(headers, row):
            xml.append(f'    <{header}>{value}</{header}>')
        xml.append('  </Product>')
    xml.append('</Products>')
    
    return '\n'.join(xml)

# 测试第一组输入
csv_input1 = """ProductId,ProductName,Manufacturer,ProductPrice 
100,IPhone,Apple,$799 
101,Galaxy S25,Samsung,$899"""
print(csv_to_dynamic_xml(csv_input1))

# 测试第二组输入
csv_input2 = """ProductId,ProductName,Manufacturer,ProductPrice,MFYear 
100,IPhone,Apple,$799,2024 
101,Galaxy S25,Samsung,$899,2025"""
print(csv_to_dynamic_xml(csv_input2))

代码说明

  • 先将输入的CSV字符串按换行拆分,过滤无效空行
  • 提取第一行作为表头,后续行作为数据行
  • 循环遍历每条数据,根据表头动态生成对应的XML子元素,完全适配列数变化
  • 最终拼接成标准格式的XML字符串

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 06:22:15