コメント
コメントの投稿
※名前とタイトルが入力されていないコメントでは他のコメントとの区別ができません。
入力されていないコメントには返信しませんのであらかじめご了承くださいませ。
<?xml version="1.0" encoding="utf-8"?>
<root>
<header>
<id>1</id>
<title>ヘッダー1</title>
</header>
<details>
<detail>
<id>1</id>
<seq>1</seq>
<name>明細1</name>
</detail>
<detail>
<id>1</id>
<seq>2</seq>
<name>明細2</name>
</detail>
<detail>
<id>1</id>
<seq>3</seq>
<name>明細3</name>
</detail>
</details>
</root>
<System.Xml.Serialization.XmlRoot("root")>
Public Class XmlSampleClass
<System.Xml.Serialization.XmlElement("header")>
Public Property Header As XmlHeader
<System.Xml.Serialization.XmlArray("details"),
System.Xml.Serialization.XmlArrayItem("detail")>
Public Property Details As List(Of XmlDetail)
End Class
<System.Xml.Serialization.XmlType("header")>
Public Class XmlHeader
<System.Xml.Serialization.XmlElement("id")>
Public Property id As Integer
<System.Xml.Serialization.XmlElement("title")>
Public Property title As String
End Class
<System.Xml.Serialization.XmlType("detail")>
Public Class XmlDetail
<System.Xml.Serialization.XmlElement("id")>
Public Property id As Integer
<System.Xml.Serialization.XmlElement("seq")>
Public Property seq As Integer
<System.Xml.Serialization.XmlElement("name")>
Public Property [name] As String
End Class
Public Class XmlUtility
''' <summary>
''' Xmlを読み取り、クラスに変換して返す
''' </summary>
''' <typeparam name="T">変換後の型</typeparam>
''' <param name="filePath">Xmlファイルパス</param>
''' <returns></returns>
Public Shared Function GetObject(Of T)(ByVal filePath As String) As T
'読み込む型を指定します。
Dim tp As Type = GetType(T)
'XmlSerializerオブジェクトを作成
Dim serializer As New System.Xml.Serialization.XmlSerializer(tp)
'UTF指定で開きます
Dim encode As System.Text.Encoding = New System.Text.UTF8Encoding(False)
'読み込むファイルを開く
Dim sr As New System.IO.StreamReader(filePath, encode)
'XMLファイルから読み込み、逆シリアル化する
Dim obj As T = DirectCast(serializer.Deserialize(sr), T)
'XMLファイルを閉じる
sr.Close()
Return obj
End Function
End Class
Private Sub btnReadXml_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnReadXml.Click
Dim obj As XmlSampleClass = XmlUtility.GetObject(Of XmlSampleClass)("c:\XmlSample.xml")
End Sub
※名前とタイトルが入力されていないコメントでは他のコメントとの区別ができません。
入力されていないコメントには返信しませんのであらかじめご了承くださいませ。