为什么我在序列化对象后得到这些数据 [英] Why i get the this data after serialize an object
问题描述
大家好,
我想知道为什么我在数据集合中得到最后一个值。我在一个由两个成员组成的对象中进行了序列化。这是代码
Imports System.Xml.Serialization
' < XmlRoot(AuditLogiciel)>
< serializable()>
公开 类 DataAcquisition
公开 Sub 新()
' Rienàfaire。
结束 Sub
#RegionDéclaration
Public DateData 作为 日期
公共 MesureCapteur 作为 字符串
#End Region
#RegionPropiétés
' < XmlAttribute(Dates)>
公共 属性日期()正如 日期
获取
返回 DateData
结束 获取
设置( ByVal 值为 日期)
DateData = value
结束 设置
结束 属性
' < XmlAttribute(CapteurMesure)>
公众 属性上尉eurMesure()作为 字符串
获取
返回 MesureCapteur
结束 获取
设置( ByVal 值作为 字符串)
MesureCapteur = value
结束 设置
结束 属性
#End Region
#RegionMétodes
#End Region
结束 Class
在另一堂课:
私有 Sub MainWindow_Closing( ByVal sender As System。 Object , ByVal e As System.ComponentModel.CancelEventArgs)句柄 MyBase .Closing
Dim xSerializer As XmlSerializer = 新 XmlSerializer( GetType (DataAcquisition))
Dim writer As TextWriter = 新 StreamWriter( nomFichierC onfigXml.XML)
xSerializer.Serialize(writer,Config)
writer.Close()
End Sub
属性日期中包含许多信息。儿子,当我进行序列化时,我在日期内获得该信息的最后价值。
结果如下:
<? xml version = 1.0 < span class =code-summarycomment> encoding = UTF-8 ? >
- < DataMesuresCapteur xmlns:xsd = http://www.w3.org/2001/XMLSchema xmlns:xsi = http://www.w3。 org / 2001 / XMLSchema-instance > - < AcquisiMesur > - < DataAcquisition > < 日期 > 2013-09-23T17:25:35 < /日期 > < CapteurMesure > 0,4 < / CapteurMesure > < / DataAcquisition > - < DataAcquisition > < ; 日期 > 2013-09-23T17:25:35 < / Dates > < CapteurMesure > 0,4 < / CapteurMesure > < / DataAcquisition > - < DataAcquisition > < 日期 > 2013-09-23T17:25:35 < / Dates > < CapteurMesure < span class =code-keyword>> 0,4 < / CapteurMesure > < / DataAcquisition > - < DataAcquisition > < 日期 > 2013-09-23T17:25:35 < /日期 > < CapteurMesure > 0,4 < / CapteurMesure > < / DataAcquisition > - < DataAcquisition > < 日期 > 2013-09-23T17:25:35 < /日期 > < CapteurMesure > 0,4 < span class =code-keyword>< / CapteurMesure > < / DataAcquisition > - < DataAcquisition > < 日期 > 2013-09-23T17:25:35 < span class =code-keyword>< / Dates > < CapteurMesure > 0,4 < / CapteurMesure > < / DataAcquisi >
正如你所看到的那样总是相同的值(最后一个值)我的日期)。
注意:日期中包含很多值。
为什么我只得到一个值,而不是所有值。
谢谢
你必须序列化一个对象集合一个实例(在你的情况下配置)
试试这个:
' < XmlRoot(AuditLogiciel)>
< Serializable()> ;
公开 类 DataAcquisition
< NonSerialized()>
公开 共享列表作为列表( DataAcquisition)= 新列表( DataAcquisition)
公共 Sub 新()
' Rienàfaire。
List.Add( 我)
结束 Sub
#RegionDéclaration
公共 DateData 作为 日期
公开 MesureCapteur 作为 字符串
#End Region
#RegionPropiétés
' < XmlAttribute(Dates)>
公共 属性日期() As 日期
获取
返回 DateData
结束 获取
设置( ByVal 值作为 日期)
DateData = value
结束 设置
结束 属性
' < XmlAttribute(CapteurMesure)> ;
公共 属性 CapteurMesure()作为 字符串
获取
返回 MesureCapteur
结束 获取
< span class =code-keyword>设置( ByVal 值为 字符串)
MesureCapteur = value
结束 设置
结束 物业
< span class =code-preprocessor> #End Regi on
#RegionMétodes
#End Region
结束 Class
Dim test As DataAcquisition = 新 DataAcquisition()使用 {.CapteurMesure = 5,。日期= 日期。现在}
Dim test2 作为 DataAcquisition = 新 DataAcquisition()使用 {.CapteurMesure = 7,。日期= 日期 .Today}
私有 Sub Button2_Click(发件人作为系统。对象,e As System.EventArgs)句柄 Button2。点击
Dim xSerializer 作为 XmlSerializer = 新 XmlSerializer( GetType (List( of DataAcquisition)))
Dim writer As TextWriter = 新 StreamWriter( nomFichierConfigXml.XML)
xSerializer.Serialize(writer,DataAcquisition.List)
writer。关闭()
结束 Sub
Hi everybody,
I want to know why i get de last value in a collection of data. I made the serialization in an object which is composed by two members. Here is the code
Imports System.Xml.Serialization '<XmlRoot("AuditLogiciel")> <serializable()> Public Class DataAcquisition Public Sub New() ' Rien à faire. End Sub #Region "Déclaration" Public DateData As Date Public MesureCapteur As String #End Region #Region "Propiétés" '<XmlAttribute("Dates")> Public Property Dates() As Date Get Return DateData End Get Set(ByVal value As Date) DateData = value End Set End Property ' <XmlAttribute("CapteurMesure")> Public Property CapteurMesure() As String Get Return MesureCapteur End Get Set(ByVal value As String) MesureCapteur = value End Set End Property #End Region #Region "Métodes" #End Region End Class
In another class:
Private Sub MainWindow_Closing(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing Dim xSerializer As XmlSerializer = New XmlSerializer(GetType(DataAcquisition)) Dim writer As TextWriter = New StreamWriter("nomFichierConfigXml.XML") xSerializer.Serialize(writer, Config) writer.Close() End Sub
The property Dates is fill with many information. Son when i made the serialisation, i get just de last value of that information within Dates.
Here is the result:
<?xml version="1.0" encoding="UTF-8"?> -<DataMesuresCapteur xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">-<AcquisiMesur>-<DataAcquisition><Dates>2013-09-23T17:25:35</Dates><CapteurMesure>0,4</CapteurMesure></DataAcquisition>-<DataAcquisition><Dates>2013-09-23T17:25:35</Dates><CapteurMesure>0,4</CapteurMesure></DataAcquisition>-<DataAcquisition><Dates>2013-09-23T17:25:35</Dates><CapteurMesure>0,4</CapteurMesure></DataAcquisition>-<DataAcquisition><Dates>2013-09-23T17:25:35</Dates><CapteurMesure>0,4</CapteurMesure></DataAcquisition>-<DataAcquisition><Dates>2013-09-23T17:25:35</Dates><CapteurMesure>0,4</CapteurMesure></DataAcquisition>-<DataAcquisition><Dates>2013-09-23T17:25:35</Dates><CapteurMesure>0,4</CapteurMesure></DataAcquisition>
As you can see is always the same value (the last value of my dates).
Note: Dates is fill with many values.
Why i get just one value and not ALL VALUES.
Thanks解决方案You have to serialize a collection of object not only one instance (Config in your case)
Try this :
'<XmlRoot("AuditLogiciel")> <Serializable()> Public Class DataAcquisition <NonSerialized()> Public Shared List As List(Of DataAcquisition) = New List(Of DataAcquisition) Public Sub New() ' Rien à faire. List.Add(Me) End Sub #Region "Déclaration" Public DateData As Date Public MesureCapteur As String #End Region #Region "Propiétés" '<XmlAttribute("Dates")> Public Property Dates() As Date Get Return DateData End Get Set(ByVal value As Date) DateData = value End Set End Property ' <XmlAttribute("CapteurMesure")> Public Property CapteurMesure() As String Get Return MesureCapteur End Get Set(ByVal value As String) MesureCapteur = value End Set End Property #End Region #Region "Métodes" #End Region End Class
Dim test As DataAcquisition = New DataAcquisition() With {.CapteurMesure = "5", .Dates = Date.Now} Dim test2 As DataAcquisition = New DataAcquisition() With {.CapteurMesure = "7", .Dates = Date.Today} Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click Dim xSerializer As XmlSerializer = New XmlSerializer(GetType(List(Of DataAcquisition))) Dim writer As TextWriter = New StreamWriter("nomFichierConfigXml.XML") xSerializer.Serialize(writer, DataAcquisition.List) writer.Close() End Sub
这篇关于为什么我在序列化对象后得到这些数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!