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
相关产品推荐
相关产品推荐

