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