Visual Basic サンプル集 |
![]() ![]() ![]() ![]() ![]() |
Visual Basic 中学校 > Visual Basic サンプル集 > Visual Basic サンプル集目次 >
XMLのシリアライズ・デシリアライズ
1.オブジェクトをXMLにシリアライズする例
次の関数は対象のオブジェクトtargetをDataContractを使用してXMLにシリアライズして返す。この場合「XMLにシリアライズ」とはオブジェクトをXMLとして表現することを指す。





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を配置





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を読み込んでオブジェクトを作成する。




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を配置





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 |