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

技术请求:将指定String标签内的JSON转换为目标XML结构

解决JSON转XML并保留外层<string>标签的问题

嘿,我来帮你搞定这个转换需求!你需要把包裹在特定命名空间<string>标签里的JSON,转换成对应的XML子元素,同时保留外层的命名空间标签。下面是具体的实现方案和代码示例:

步骤说明

  1. 解析原始XML字符串,提取出内部的JSON内容
  2. 将JSON转换为对应的XML元素(可按需调整键名)
  3. 用转换后的XML元素替换原<string>标签里的JSON文本,得到目标XML

C# 代码示例(使用Newtonsoft.Json)

如果你用的是.NET环境,这个方案非常适用:

using System;
using System.Xml.Linq;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;

class JsonToXmlConverter
{
    static void Main()
    {
        // 你的原始输入XML
        string inputXml = "<string xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\"> {\"IResp\":0,\"SDescripcion\":\"OC: 2000041574. Proceso exitoso.\"}</string>";
        
        // 解析外层的<string>元素
        XElement rootElement = XElement.Parse(inputXml);
        
        // 提取并清理内部的JSON文本
        string rawJson = rootElement.Value.Trim();
        
        // 注意:你的预期结果里把SDescripcion写成了SDescription,如果需要修改键名,取消下面这行注释
        // rawJson = rawJson.Replace("\"SDescripcion\"", "\"SDescription\"");
        
        // 将JSON转换为XML元素(去掉自动生成的根节点)
        XmlNodeConverter xmlConverter = new XmlNodeConverter { OmitRootObject = true };
        XNode convertedXmlNodes = JsonConvert.DeserializeXNode(rawJson, "TempRoot");
        
        // 替换原<string>里的内容
        rootElement.RemoveNodes();
        foreach (var childNode in convertedXmlNodes.Elements())
        {
            rootElement.Add(childNode);
        }
        
        // 输出最终结果
        string outputXml = rootElement.ToString();
        Console.WriteLine(outputXml);
    }
}

关键细节说明

  • 借助Newtonsoft.Json的XmlNodeConverter处理JSON到XML的转换,设置OmitRootObject=true可以避免生成多余的根节点,直接得到<IResp>和<SDescripcion>(或修改后的<SDescription>)元素
  • 如果你的预期结果里的SDescription是故意修改原JSON键名,只需要取消代码里替换键名那行的注释即可
  • 最终输出的XML会完整保留原始的xmlns命名空间,完全匹配你的需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:33:59