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

一、关于本文

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

End Function

三、调用示例

Main代码

Sub Main()

    Dim sJson As String = JsonXmlHelper.RecoverJsonFromXml("x.xml")
    Console.WriteLine(sJson)

    Console.ReadLine()

End Sub

四、运行结果

END

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

时间: 2024-10-11 06:50:48

VB.NET 从XML文件中读取内容到JSON的相关文章

将XML文件中的内容转换为Json对象

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Xml;using System.Web.Script.Serialization;using Newtonsoft.Json;using System.Windows.Forms; namespace XmlToJsonDemo{ class Program { static void Main(strin

在文件中读取、存储Json格式的字符串

public class Weather { static readonly string FilePath = System.Environment.CurrentDirectory + @"\Area.txt"; public static Models.Area GetCurrentArea() { var file = new FileInfo(FilePath); Models.Area result; if (!file.Exists) { //文件不存在就返回一个默认值,

python3 简单实现从csv文件中读取内容,并对内容进行分类统计

新手python刚刚上路,在实际工作中遇到如题所示的问题,尝试使用python3简单实现如下,欢迎高手前来优化 import csv #打开文件,用with打开可以不用去特意关闭file了,python3不支持file()打开文件,只能用open() with open("dk0519_1.csv","r",encoding="utf-8") as csv_file: #读取csv文件,返回的是迭代类型 read = csv.reader(csv

[SoapUI] 比较API在两个测试环境下的XML response文件,找出不同的DataID和DataValue,并从另外一个保存着API DataID与UI DataName 映射关系的XML文件中读取DataName

import org.custommonkey.xmlunit.* import javax.xml.xpath.* import javax.xml.parsers.DocumentBuilderFactory import javax.xml.parsers.*; String UIDataName = "" def responseTP= new FileReader( new File('D:\\Study\\MA\\xml_TP.xml')) def responseLive

从Excel文件中读取内容

global::System.Web.HttpPostedFileBase file = Request.Files["txtFile"]; string FileName; string savePath; if (file == null || file.ContentLength <= 0) { ViewBag.error = "文件不能为空"; return View(); } else { string filename = global::Syst

Oracle从数据库表中XML文件中读取对应字段

例子: select substr(largetext,instr(largetext,'A',1,1)+11,instr(largetext,'B',1,1)-instr(largetext,'A',1,1)-11) as CutStrfrom 表名 where id='123456789'and instr(largetext,'B',1,1)<>0; 1.instr 返回要截取的字符串在源字符串中的位置,字符串分隔常用函数. instr( string1, string2, start_

从属性文件中读取内容

import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Properties; public class PropertiesDemo03 {     public static void main(String[] args) {         Properties pro =

VB.NET 将JSON格式的字符串保存到XML文件中

1.关于本文 这几天打算写一个工具类JsonXmlHelper,用来进行用XML来保存JSON格式文件的工作.该工具类中要实现2个最主要的函数: 1)将JSON格式的内容写入到地址为address的XML中:WriteJsonToXml 2)把函数1中构造的XML文件恢复成JSON格式文档:RecoverJsonFromXml 函数1的实现将在本文中给出,函数2的实现将在以后发表的博文中给出 2.代码说明 1)添加引用:Newtonsoft.Json.dll 2)导入库 'JSON解析相关函数,

在java中读取文件中的内容

1 package shi; 2 3 import java.io.*; 4 5 public class wenjianIO { 6 public static void main(String agrs[]){ 7 FileInputStream fis=null; 8 File f=new File("F:/test/javakc.txt"); 9 10 try { 11 fis=new FileInputStream(f); 12 byte[]arr=new byte[(int