標籤: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