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

如何将XML中含%3D、%26的URL参数转换为JSON?

问题翻译

我有如下XML字符串:

<xml><row ID="61" url="Page.aspx%3fstepid%3dMyStepID%26ID%3d65454%26UserID%3d2542240%26process%3dMyProcess"></row></xml>

我需要仅提取该字符串中URL部分的参数,将其转换为JSON模型。示例如下:

StepID:MyStepID
ID:65454
UserID:2542240
Process:MyProcess

我注意到字符串中键与值用%3D分隔,各参数间用%26分隔,请问该如何将其转换为JSON?


解决方法

核心思路

先从XML里抠出URL编码的字符串,解码还原成正常的查询参数格式,再拆分键值对,最后转成JSON。

步骤+代码示例(Python)

import xml.etree.ElementTree as ET
import urllib.parse
import json

# 原始XML字符串
xml_str = '<xml><row ID="61" url="Page.aspx%3fstepid%3dMyStepID%26ID%3d65454%26UserID%3d2542240%26process%3dMyProcess"></row></xml>'

# 1. 从XML里提取url属性
root = ET.fromstring(xml_str)
url_encoded = root.find('row').get('url')

# 2. 解码URL编码(%3D转=,%26转&,%3F转?)
url_decoded = urllib.parse.unquote(url_encoded)

# 3. 拆分参数,整理成键值对
query_part = url_decoded.split('?')[1]  # 只取?后面的参数部分
params = {}
# 自定义键名映射,匹配示例里的大小写
key_map = {
    'stepid': 'StepID',
    'id': 'ID',
    'userid': 'UserID',
    'process': 'Process'
}
for param in query_part.split('&'):
    key, value = param.split('=')
    params[key_map[key.lower()]] = value

# 4. 转成JSON
json_result = json.dumps(params, indent=2)
print(json_result)

输出结果

{
  "StepID": "MyStepID",
  "ID": "65454",
  "UserID": "2542240",
  "Process": "MyProcess"
}

JavaScript版本参考

如果用前端JS处理,逻辑完全一致:

const xmlStr = '<xml><row ID="61" url="Page.aspx%3fstepid%3dMyStepID%26ID%3d65454%26UserID%3d2542240%26process%3dMyProcess"></row></xml>';

// 解析XML拿url属性
const xmlDoc = new DOMParser().parseFromString(xmlStr, "text/xml");
const urlEncoded = xmlDoc.querySelector('row').getAttribute('url');

// 解码
const urlDecoded = decodeURIComponent(urlEncoded);

// 拆分参数
const queryPart = urlDecoded.split('?')[1];
const params = {};
const keyMap = {
    'stepid': 'StepID',
    'id': 'ID',
    'userid': 'UserID',
    'process': 'Process'
};
queryPart.split('&').forEach(param => {
    const [key, value] = param.split('=');
    params[keyMap[key.toLowerCase()]] = value;
});

// 转JSON
const jsonResult = JSON.stringify(params, null, 2);
console.log(jsonResult);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 18:15:48