标签:roo new creat ORC com vertx 自动识别 ack font
使用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.add(XmlArribute)来添加
也可以string字符替换(只适用于没重复节点的xml)
xmlInfo = xmlInfo.Replace("<RecordArray>", "<RecordArray json:Array=‘true‘>");
参考:https://q.cnblogs.com/q/41823/
https://stackoverflow.com/questions/21382879/xml-to-json-using-newtonsoft-issue-when-loop-over-array-of-one-element/21383423#21383423
https://www.newtonsoft.com/json/help/html/ConvertXmlToJsonForceArray.htm
xml转换为json格式时,如何将指定节点转换成数组 Json.NET
标签:roo new creat ORC com vertx 自动识别 ack font
原文地址:https://www.cnblogs.com/jhlong/p/9516628.html