技术请求:将指定String标签内的JSON转换为目标XML结构
解决JSON转XML并保留外层
<string>标签的问题 嘿,我来帮你搞定这个转换需求!你需要把包裹在特定命名空间<string>标签里的JSON,转换成对应的XML子元素,同时保留外层的命名空间标签。下面是具体的实现方案和代码示例:
步骤说明
- 解析原始XML字符串,提取出内部的JSON内容
- 将JSON转换为对应的XML元素(可按需调整键名)
- 用转换后的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
相关产品推荐
相关产品推荐

