|
分類:[VB.NET/VB2005 以降]
初めて投稿させていただきます。
XMLをデシリアライズしてデータを加工してテキストに出力するプログラムを 作成しています。
以下の実行プログラムで以下のクラスにデシリアライズしていますが STAFF-INFO要素の値が空白の場合デシリアライズしたclsStaffInfoクラスの CodeがNohtingになってしまいます。もちろん空白以外の値の場合は 正常にCodeに値が入ってきます。
今回のXMLデータではSTAFF-INFO要素には半角スペース5つが登録されています。 これをそのまま取得したいのですが、何か方法はあるでしょうか?
ネットで情報を調べてStreamReaderで読んでいたところをXmlDocumentで 読むように変更して「PreserveWhitespace = True」を設定する必要が あるとのことでしたので、そのように対応していると思うのですが 何か間違っていますでしょうか?
ご教示ください。
【XMLデータ】 <STAFF> <STAFF-INFO startdate="20170101" enddate="20171231"> </STAFF-INFO> <STAFF-NAME>山田 太郎</STAFF-NAME> </STAFF>
【デシリアライズするクラス】 <System.Xml.Serialization.XmlRoot("STAFF")> Public Class clsStaff <System.Xml.Serialization.XmlElement("STAFF-INFO")> Public Info As clsStaffInfo
<System.Xml.Serialization.XmlElement("STAFF-NAME")> Public Name As String
End Class
Public Class clsStaffInfo <System.Xml.Serialization.XmlAttribute("startdate")> Public StartDate As String
<System.Xml.Serialization.XmlAttribute("enddate")> Public EndDate As String
<System.Xml.Serialization.XmlText()> Public Code As String
End Class
【デシリアライズ実行プログラム】 Private Sub DeserializeXml(ByVal asXmlFile As String)
Dim loSerializer As New Serialization.XmlSerializer(GetType(clsStaff))
Dim loDoc As New XmlDocument loDoc.PreserveWhitespace = True loDoc.Load(asXmlFile)
Dim loReader As New XmlNodeReader(loDoc.DocumentElement)
Dim loStaff As clsStaff = DirectCast(loSerializer.Deserialize(loReader), clsStaff)
End Sub
|