一、关于本文
本文承接了上一篇博客的内容。在上篇博客中,通过函数WriteJsonToXml将一个JSON格式的文件写入了一个对应的XML文件中。本文中则给出了函数RecoverjsonFromXml的代码,可以将XML恢复成JSON格式的文本。
待读取的XML文档内容如下:
<?xmlversion="1.0"encoding="gb2312"?> <!--这个XML文档中存储了一个JSON格式的信息--> <Root> <NameType="String"Value="Tsybius"/> <AgeType="Integer"Value="23"/> <Sex_is_MaleType="Boolean"Value="True"/> <PartnerType="Object"> <Partner_NameType="String"Value="galatea"/> <Partner_AgeType="Integer"Value="21"/> <Partner_Sex_is_MaleType="Boolean"Value="False"/> </Partner> <AchievementType="Array"Value0="ach1"Value1="ach2"Value2="ach3"/> </Root>
'''<summary> '''将XML格式的内容存储到JSON格式的字符串中 '''</summary> '''<paramname="address">要读取的XML文件地址</param> '''<remarks></remarks> PublicSharedFunctionRecoverjsonFromXml(addressAsstring)Asstring DimxmlDoc=NewXmlDocument xmlDoc.Load(address) DimxmlRootAsXmlNode=xmlDoc.SelectSingleNode("Root") DimjtempAsJObject=WritetoJson(xmlRoot) ReturnjsonConvert.SerializeObject(jtemp,Newtonsoft.Json.Formatting.Indented) EndFunction '''<summary> '''中XmlNode类型中读取一个JObject类型数据的信息 '''</summary> '''<paramname="xNode">XML结点类型数据</param> '''<returns>JObject类型数据</returns> '''<remarks></remarks> PrivateSharedFunctionWritetoJson(xNodeAsXmlNode)AsJObject DimjobjAsNewJObject ForEachobjAsObjectInxNode.ChildNodes Ifobj.GetType.ToString="System.Xml.XmlElement"Then '读取到XML结点 DimxelmtAsXmlElement=obj SelectCasexElmt.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",NewJValue(True),NewJValue(False))) Case"Array"'JSON数组 DimjarrAsJArray=NewJArray() ForiAsInteger=0ToxElmt.Attributes.Count-2 jarr.Add(NewJValue(xElmt.GetAttribute("Value"&i.ToString))) Next jobj.Add(xElmt.Name,jarr) Case"Object"'JSON对象 jobj.Add(xElmt.Name,WritetoJson(obj)) EndSelect ElseIfobj.GetType.ToString="System.Xml.XmlComment"Then '读取到注释 ContinueFor Else '其他情况 ContinueFor EndIf Next Returnjobj EndFunction
三、调用示例
Main代码
SubMain() DimsJsonAsstring=jsonxmlHelper.RecoverjsonFromXml("x.xml") Console.WriteLine(sJson) Console.ReadLine() EndSub
四、运行结果
END
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。