xml转换为json格式时,如何将指定节点转换成数组 Json.NET
Posted 海龙的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了xml转换为json格式时,如何将指定节点转换成数组 Json.NET相关的知识,希望对你有一定的参考价值。
使用Json.NET转换xml成json时,如果xml只有单个节点,但json要求是数组形式[],
JsonConvert.SerializeXmlNode
并不能自动识别
示例如下:
RecordArray要求是数组格式
<root> <Record> </Record> <RecordArray> <a>1</a> <b>2</b> </RecordArray> </root>
转换后的json不能满足要求
{ "root": { "Record": " ", "RecordArray": { "a": "1", "b": "2" } } }
解决办法
查阅资料后发现很简单
xml根节点需要加上 属性
xmlns:json=\'http://james.newtonking.com/projects/json\'
需要转换为数组的节点加上属性
json:Array=\'true\'
如下所示
<root xmlns:json=\'http://james.newtonking.com/projects/json\'>
<Record>
</Record>
<RecordArray json:Array=\'true\' >
<a>1</a>
<b>2</b>
</RecordArray>
</root>
转换后的json可以满足要求了
{ "root": { "Record": "", "RecordArray": [ { "a": "1", "b": "2" } ] } }
xml添加属性:
添加属性的时候,可以直接在创建XmlElment的时候,通过XmlElement的SetAttribute来为节点创建属性,或者是创建
一个XmlAttribute实例:XmlAttribute xmlArr=XmlDocument.CreateAttribute("属性值"),然后通过XmlNode的
Attributes.append(XmlArribute)来添加
也可以string字符替换(只适用于没重复节点的xml)
xmlInfo = xmlInfo.Replace("<RecordArray>", "<RecordArray json:Array=\'true\'>");
参考:
https://www.newtonsoft.com/json/help/html/ConvertXmlToJsonForceArray.htm
以上是关于xml转换为json格式时,如何将指定节点转换成数组 Json.NET的主要内容,如果未能解决你的问题,请参考以下文章