使用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