如何使用XSLT提取XML节点内嵌JSON字符串的指定字段
注意你给出的示例存在两处笔误:
- INPUT标签内的JSON语法错误,两个键值对之间的冒号应为逗号,修正后JSON为
{"data":"abc1234","format":"text"} - 预期输出的闭合标签拼写错误,
</OUPUT>应为</OUTPUT>,以下实现默认输出正确拼写的标签,可根据需求自行调整。
以下是几种常见场景的实现方案:
1. Python 实现(跨平台通用)
适合需要集成到脚本、批量处理的场景:
import xml.etree.ElementTree as ET import json # 替换为你的实际输入内容 input_xml = '<INPUT>{"data":"abc1234","format":"text"}</INPUT>' # 解析XML提取JSON字符串 json_content = ET.fromstring(input_xml).text # 解析JSON提取data字段 data_value = json.loads(json_content)["data"] # 输出指定格式结果 print(f"<OUTPUT>{data_value}</OUTPUT>")
2. Shell 命令行实现(适合 Linux/macOS 终端快速处理)
依赖xmllint和jq工具,大多发行版默认自带:
echo '<INPUT>{"data":"abc1234","format":"text"}</INPUT>' | \ # 提取INPUT标签内的文本 xmllint --xpath 'string(//INPUT)' - | \ # 提取JSON的data字段值 jq -r '.data' | \ # 拼接输出格式 xargs -I {} echo "<OUTPUT>{}</OUTPUT>"
3. JavaScript 实现(适合前端/Node.js 环境)
const inputContent = '<INPUT>{"data":"abc1234","format":"text"}</INPUT>'; // 提取INPUT标签内的JSON,生产环境建议用正式XML解析库替代正则 const jsonStr = inputContent.match(/<INPUT>(.*?)<\/INPUT>/)[1]; const dataValue = JSON.parse(jsonStr).data; console.log(`<OUTPUT>${dataValue}</OUTPUT>`);
如果需要处理格式复杂、结构多变的XML内容,不要用正则匹配标签,优先选择对应语言的XML解析库处理,避免匹配错误。
内容的提问来源于stack exchange,提问作者sivakumar kala
相关产品推荐
相关产品推荐

