ヘッダー
Visual Basic サンプル集
VB2005 対応 VB2008対応 VB2010対応 VB2012対応 VB2013対応

XMLのシリアライズ・デシリアライズ

1.オブジェクトをXMLにシリアライズする例

次の関数は対象のオブジェクトtargetをDataContractを使用してXMLにシリアライズして返す。
この場合「XMLにシリアライズ」とはオブジェクトをXMLとして表現することを指す。


VB2005 対応
VB2008対応 VB2010対応 VB2012対応 VB2013対応
Public Function Serialize(target As Object) As String

    Using stream As New IO.MemoryStream

        '▼シリアライズ実行
        Dim serializer As New Xml.Serialization.XmlSerializer(target.GetType)
        serializer.Serialize(stream, target)

        '▼結果を取得
        Dim result As String = System.Text.Encoding.UTF8.GetString(stream.ToArray())
        Return result

    End Using

End Function

すぐ試せる例

上記関数の使用例。

前提

  • Windows フォーム アプリケーションで作成
  • Button1を配置
  • TextBox1を配置
VB2005 対応 VB2008対応 VB2010対応 VB2012対応 VB2013対応
Public Class Form1

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

        Dim p As New Person
        p.Id = 627
        p.Name = "徳川家康"

        TextBox1.Text = Serialize(p)

    End Sub

    Public Function Serialize(target As Object) As String

        Using stream As New IO.MemoryStream

            '▼シリアライズ実行
            Dim serializer As New Xml.Serialization.XmlSerializer(target.GetType)
            serializer.Serialize(stream, target)

            '▼結果を取得
            Dim result As String = System.Text.Encoding.UTF8.GetString(stream.ToArray())
            Return result

        End Using

    End Function

End Class

Public Class Person

    Public Property Id As Integer
    Public Property Name As String

End Class

この例を実行して得られるXMLは以下の通り。

<?xml version="1.0"?>
<Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Id>627</Id>
  <Name>徳川家康</Name>
</Person>

2.DataContractを使用してXMLをデシリアライズする例

次の関数はシリアライズで作成したXMLを読み込んでオブジェクトを作成する。

VB2005 対応
VB2008対応 VB2010対応 VB2012対応 VB2013対応
Public Function Deserialize(Of T)(xml As String) As T

    Dim result As T
    Dim serializer As New Xml.Serialization.XmlSerializer(GetType(T))

    Using stream As New IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(xml))
        result = DirectCast(serializer.Deserialize(stream), T)
    End Using

    Return result

End Function

すぐ試せる例

上記関数の使用例。

前提

  • Windows フォーム アプリケーションで作成
  • Button1を配置
VB2005 対応 VB2008対応 VB2010対応 VB2012対応 VB2013対応
Public Class Form1

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

        Dim xml As String = "<?xml version=""1.0""?><Person xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema""><Id>627</Id><Name>徳川家康</Name></Person>"
        Dim p As Person

        p = Deserialize(Of Person)(xml)

        MsgBox(p.Name)

    End Sub

    Public Function Deserialize(Of T)(xml As String) As T

        Dim result As T
        Dim serializer As New Xml.Serialization.XmlSerializer(GetType(T))

        Using stream As New IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(xml))
            result = DirectCast(serializer.Deserialize(stream), T)
        End Using

        Return result

    End Function

End Class

Public Class Person

    Public Property Id As Integer
    Public Property Name As String

End Class

参考

DataContractを使用したXMLのシリアライズ・デシリアライズ