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

C#中将指定XML字符串转换为JObject/JArray的方法求助

解决C#中XML转JArray/JObject的问题

我来帮你搞定这个XML转JArray的需求!你想要把给定的XML结构转换成指定格式的JArray,其实用Newtonsoft.Json(Json.NET)结合System.Xml.Linq就能轻松实现,下面是具体的解决步骤和代码示例:

需求回顾

输入XML:

<ds> 
    <table> 
        <user>someuser1</user> 
        <login>true</login> 
    </table> 
    <table> 
        <user>someuser2</user> 
        <login>true</login> 
    </table> 
</ds>

预期输出JArray格式:

[{ "user": "someuser1", "login": "true" }, { "user": "someuser2", "login": "true" }]

完整代码实现

首先确保你的项目引用了Newtonsoft.Json和System.Xml.Linq NuGet包,然后使用以下代码:

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

// 你的XML字符串
string xmlContent = @"<ds> <table> <user>someuser1</user> <login>true</login> </table> <table> <user>someuser2</user> <login>true</login> </table> </ds>";

// 1. 解析XML到XElement
XElement rootElement = XElement.Parse(xmlContent);

// 2. 遍历所有<table>元素,转换为JObject并收集到JArray中
JArray convertedArray = new JArray(
    rootElement.Elements("table").Select(tableElement => new JObject(
        new JProperty("user", tableElement.Element("user")?.Value),
        new JProperty("login", tableElement.Element("login")?.Value)
    ))
);

// 输出转换后的结果
Console.WriteLine(convertedArray.ToString());

代码解释

  • XML解析:用XElement.Parse把XML字符串转换成可操作的XElement对象,获取根节点<ds>。
  • 遍历转换:通过rootElement.Elements("table")获取所有子节点<table>,然后用LINQ的Select把每个<table>转换成JObject——每个JObject包含user和login两个属性,值对应XML中对应子元素的文本内容。
  • 构建JArray:把所有转换后的JObject传入JArray的构造函数,直接得到你需要的数组格式。

可选调整:把login转为布尔类型

如果希望login的值是布尔类型(而不是字符串),可以修改login属性的赋值逻辑:

new JProperty("login", bool.TryParse(tableElement.Element("login")?.Value, out bool loginValue) ? loginValue : false)

这样会自动把XML中的true/false字符串转换成布尔值,同时处理可能的空值情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:58:40