加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

VB.NET 从XML文件中读取内容到JSON

发布时间:2020-12-17 07:54:15 所属栏目:百科 来源:网络整理
导读:一、关于本文 本文承接了 上一篇博客 的内容。在上篇博客中,通过函数WriteJsonToXml将一个JSON格式的文件写入了一个对应的XML文件中。本文中则给出了 函数RecoverJsonFromXml的代码,可以将XML恢复成JSON格式的文本。 运行本文中代码的环境与上篇博客相同。

一、关于本文

本文承接了上一篇博客的内容。在上篇博客中,通过函数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>

二、函数RecoverJsonFromXml

这两个函数被声明在类JsonXmlHelper中

'''<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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读