VB.NET 從XML檔案中讀取內容到JSON

來源:互聯網
上載者:User

標籤:des   style   blog   http   os   strong   檔案   資料   

一、關於本文

本文承接了上一篇部落格的內容。在上篇部落格中,通過函數WriteJsonToXml將一個JSON格式的檔案寫入了一個對應的XML檔案中。本文中則給出了函數RecoverJsonFromXml的代碼,可以將XML恢複成JSON格式的文本。

運行本文中代碼的環境與上篇部落格相同。

待讀取的XML文檔內容如下:

<?xml version="1.0" encoding="gb2312"?><!--這個XML文檔中儲存了一個JSON格式的資訊--><Root>  <Name Type="String" Value="Tsybius" />  <Age Type="Integer" Value="23" />  <Sex_is_Male Type="Boolean" Value="True" />  <Partner Type="Object">    <Partner_Name Type="String" Value="Galatea" />    <Partner_Age Type="Integer" Value="21" />    <Partner_Sex_is_Male Type="Boolean" Value="False" />  </Partner>  <Achievement Type="Array" Value0="ach1" Value1="ach2" Value2="ach3" /></Root>

二、函數RecoverJsonFromXml

這兩個函數被聲明在類JsonXmlHelper中

‘‘‘ <summary>‘‘‘ 將XML格式的內容儲存到JSON格式的字串中‘‘‘ </summary>‘‘‘ <param name="address">要讀取的XML檔案地址</param>‘‘‘ <remarks></remarks>Public Shared Function RecoverJsonFromXml(address As String) As String    Dim xmlDoc = New XmlDocument    xmlDoc.Load(address)    Dim xmlRoot As XmlNode = xmlDoc.SelectSingleNode("Root")    Dim jtemp As JObject = WriteToJson(xmlRoot)    Return JsonConvert.SerializeObject(jtemp, Newtonsoft.Json.Formatting.Indented)End Function‘‘‘ <summary>‘‘‘ 中XmlNode類型中讀取一個JObject類型資料的資訊‘‘‘ </summary>‘‘‘ <param name="xNode">XML結點類型資料</param>‘‘‘ <returns>JObject類型資料</returns>‘‘‘ <remarks></remarks>Private Shared Function WriteToJson(xNode As XmlNode) As JObject    Dim jobj As New JObject    For Each obj As Object In xNode.ChildNodes        If obj.GetType.ToString = "System.Xml.XmlElement" Then            ‘讀取到XML結點            Dim xElmt As XmlElement = obj            Select Case xElmt.GetAttribute("Type")                Case "String"  ‘字串型變數                    jobj.Add(xElmt.Name, xElmt.GetAttribute("Value"))                Case "Integer" ‘整型變數                    jobj.Add(xElmt.Name, Integer.Parse(xElmt.GetAttribute("Value")))                Case "Float"   ‘浮點型變數                    jobj.Add(xElmt.Name, Double.Parse(xElmt.GetAttribute("Value")))                Case "Boolean" ‘布爾型變數                    jobj.Add(xElmt.Name, IIf(xElmt.GetAttribute("Value") = "True",                        New JValue(True), New JValue(False)))                Case "Array"   ‘JSON數組                    Dim jarr As JArray = New JArray()                    For i As Integer = 0 To xElmt.Attributes.Count - 2                        jarr.Add(New JValue(xElmt.GetAttribute("Value" & i.ToString)))                    Next                    jobj.Add(xElmt.Name, jarr)                Case "Object"  ‘JSON對象                    jobj.Add(xElmt.Name, WriteToJson(obj))            End Select        ElseIf obj.GetType.ToString = "System.Xml.XmlComment" Then            ‘讀取到注釋            Continue For        Else            ‘其他情況            Continue For        End If    Next    Return jobjEnd Function

三、調用樣本

Main代碼

Sub Main()    Dim sJson As String = JsonXmlHelper.RecoverJsonFromXml("x.xml")    Console.WriteLine(sJson)    Console.ReadLine()End Sub

四、運行結果


END

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.