本文介绍了为什么我在序列化对象后得到这些数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 大家好, 我想知道为什么我在数据集合中得到最后一个值。我在一个由两个成员组成的对象中进行了序列化。这是代码 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 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 > 0,4 < / CapteurMesure > < / DataAcquisition > - < DataAcquisition > < 日期 > 2013-09-23T17:25:35 < /日期 > < CapteurMesure > 0,4 < / CapteurMesure > < / DataAcquisition > - < DataAcquisition > < 日期 > 2013-09-23T17:25:35 < /日期 > < CapteurMesure > 0,4 < / CapteurMesure > < / DataAcquisition > - < DataAcquisition > < 日期 > 2013-09-23T17:25:35 < / 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 结束 获取 设置( ByVal 值为 字符串) MesureCapteur = value 结束 设置 结束 物业 #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 codeImports 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 ClassIn 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 SubThe 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 RegionEnd ClassDim 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 这篇关于为什么我在序列化对象后得到这些数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!
10-15 17:04