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

WSO2 EI中基于XML生成特定格式JSON消息的实现疑问

XML转带@键的JSON实现方案

核心实现思路

  1. 解析XML提取目标标签的内容
  2. 按规则构建JSON对象:标签存在则直接映射值;不存在时要么跳过该字段,要么设为null;JSON键可直接包含@符号(JSON语法允许键使用特殊字符)
  3. 将构建好的对象序列化为标准JSON字符串

Python 实现示例

以xml.etree.ElementTree内置库为例,无需额外安装依赖:

import xml.etree.ElementTree as ET
import json

# 示例XML输入
xml_content = """
<root>
    <tag1>sample text</tag1>
    <tag3>another value</tag3>
</root>
"""

# 定义XML标签与JSON键的映射(包含带@的键)
tag_key_mapping = {
    "tag1": "ele1",
    "tag2": "@ele2",
    "tag3": "@custom_key"
}

# 解析XML
root_node = ET.fromstring(xml_content)

# 构建JSON数据
json_result = {}
for xml_tag, json_key in tag_key_mapping.items():
    target_element = root_node.find(xml_tag)
    if target_element is not None:
        # 提取标签文本并去除首尾空白
        json_result[json_key] = target_element.text.strip()
    else:
        # 两种可选处理方式:
        # 1. 不添加该字段(默认)
        # 2. 设为null,取消下方注释即可
        # json_result[json_key] = None

# 输出格式化后的JSON
print(json.dumps(json_result, indent=2))

运行后输出:

{
  "ele1": "sample text",
  "@custom_key": "another value"
}

JavaScript 实现示例

使用xml2js库解析XML(需先执行npm install xml2js安装):

const xml2js = require('xml2js');
const parser = new xml2js.Parser({ explicitArray: false });

// 示例XML输入
const xmlContent = `
<root>
    <tag1>sample text</tag1>
    <tag3>another value</tag3>
</root>
`;

parser.parseString(xmlContent, (err, parsedResult) => {
    if (err) throw err;
    
    const tagKeyMapping = {
        "tag1": "ele1",
        "tag2": "@ele2",
        "tag3": "@custom_key"
    };

    const jsonResult = {};
    for (const [xmlTag, jsonKey] of Object.entries(tagKeyMapping)) {
        if (parsedResult.root[xmlTag]) {
            jsonResult[jsonKey] = parsedResult.root[xmlTag];
        } else {
            // 可选:添加null值,取消下方注释即可
            // jsonResult[jsonKey] = null;
        }
    }

    console.log(JSON.stringify(jsonResult, null, 2));
});

关键注意事项

  • JSON键允许包含@等特殊字符,只要用双引号包裹就符合语法规范
  • 处理不存在的XML标签时,可根据需求二选一:不生成对应JSON字段,或赋值为null
  • 解析XML时建议处理文本的空白字符,避免输出多余空格

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 20:06:11