datatable xml 序列化及反序列化

如下示例

代码如下


Imports System.Collections  ' 使用ArrayList引用
Imports System.IO
Imports System.Text
Imports System.Xml
Imports System.Xml.Serialization

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click


        ' 创建DataTable对象
        Dim dt As New DataTable()

        ' 定义列名及数据类型
        dt.Columns.Add("ID", GetType(Integer))
        dt.Columns.Add("Name", GetType(String))
        dt.Columns.Add("Age", GetType(Integer))

        ' 添加新行到DataTable
        dt.Rows.Add(1, "张三", 25)
        dt.Rows.Add(2, "李四", 30)
        dt.Rows.Add(3, "王五", 28)

        dt.AcceptChanges()

        TextBox1.Text = datatable_ToXml(dt).ToString

        If Not TextBox1.Text = "" Then
            DataGridView1.DataSource = datatable_fromXml(TextBox1.Text)
        End If

    End Sub

    'A1
    Public Function Datatable_FromXml(ByVal strXml As String) As DataTable
        Dim sr As StringReader = New StringReader(strXml)
        Dim xtr As XmlTextReader = New XmlTextReader(sr)
        Dim dt As DataTable = New DataTable
        dt.ReadXml(xtr)
        sr.Close()
        xtr.Close()
        Return dt
    End Function


    'A2
    Public Function datatable_ToXml(ByVal dt As DataTable) As StringBuilder
        If dt.TableName = "" Then dt.TableName = "dt_name" '必须设置表名或dt传入时包含表名,否则出错
        Dim stb As StringBuilder = New StringBuilder
        Dim serializer As XmlSerializer = New XmlSerializer(GetType(DataTable))
        Dim writer As XmlWriter = XmlWriter.Create(stb)
        serializer.Serialize(writer, dt)
        writer.Close()
        Return stb
    End Function

End Class

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐