使用转换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='/projects/json'
需要转换为数组的节点加上属性
json:Array='true'
如下所示
<root xmlns:json='/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>", "<RecordArrayjson:Array='true'>");
参考:
/json/help/html/ConvertXmlToJsonForceArray.htm