-
xml序列化正常,反序列化部分数据丢失5
xml结构:
<ComponentDefinition>
<Visual VisualName="hello" XAMLFilePath="ok">
<SettingValueInfoList>
<SettingValueInfo ElementName="ellipse1" ElementProperty="Fill" SettingValue="#ffff0000"/>
</SettingValueInfoList>
<DisplayConditionList>
<DisplayCondition ModelName="CurrentValueModel" ModelProperty="value" ModelValue="0"/>
</DisplayConditionList>
<BindingInfoList>
<BindingInfo>
<XAMLElementInfo ElementName="TextBlock1" ElementProperty="Text"/>
<ModelInfo ModelName="CurrentValueModel" ModelProperty="disp_value"/>
</BindingInfo>
<BindingInfo>
<XAMLElementInfo ElementName="Rectangle" ElementProperty="Width"/>
<ModelInfo ModelName="CurrentValueModel" ModelProperty="value"/>
<ConverterInfo MaximumInput="100" MinimumInput="0" MaximumOutput="300" MinimumOutput="0"/>
</BindingInfo>
</BindingInfoList>
<ControlInfoList>
<ControlInfo XAMLElementName="Grid1">
<ModelInfo ModelName="ControlInfoModel" ModelProperty="value" SendingValue="1"/>
</ControlInfo>
</ControlInfoList>
</Visual>
</ComponentDefinition>
按照此xml结构定义好相关类或结构,序列化定义好的类或结构,成功生成该xml,反序列化时出现部分数据丢失,
丢失数据为:XAMLFilePath="ok",XAMLElementName="Grid1"属性,整个XAMLElementInfo节,其他正常
结构代码:
public struct ComponentDefinition
{
[XmlElement]
public List<Visual> Visual;
}
public struct Visual
{
public Visual(string VisualName, string XamlFilePath)
{
this.VisualName = VisualName;
this.XamlFilePath = XamlFilePath;
SettingValueInfoList = null;
DisplayConditionList = null;
BindingInfoList = null;
ControlInfoList = null;
}
[XmlAttribute]
public string VisualName;
[XmlAttribute]
public string XamlFilePath;
public List<SettingValueInfo> SettingValueInfoList;
public List<DisplayCondition> DisplayConditionList;
public List<BindingInfo> BindingInfoList;
public List<ControlInfo> ControlInfoList;
}
public struct SettingValueInfo
{
public SettingValueInfo(string ElementName, string ElementProperty, string SettingValue)
{
this.ElementName = ElementName;
this.ElementProperty = ElementProperty;
this.SettingValue = SettingValue;
}
[XmlAttribute]
public string ElementName;
[XmlAttribute]
public string ElementProperty;
[XmlAttribute]
public string SettingValue;
}
public struct DisplayCondition
{
public DisplayCondition(string ModelName, string ModelProperty, string ModelValue)
{
this.ModelName = ModelName;
this.ModelProperty = ModelProperty;
this.ModelValue = ModelValue;
}
[XmlAttribute]
public string ModelName;
[XmlAttribute]
public string ModelProperty;
[XmlAttribute]
public string ModelValue;
}
public struct BindingInfo
{
public BindingInfo(XamlElementInfo XamlElementInfo, ModelInfo ModelInfo, ConverterInfo ConverterInfo)
{
this.XamlElementInfo = XamlElementInfo;
this.ModelInfo = ModelInfo;
this.ConverterInfo = ConverterInfo;
}
public XamlElementInfo XamlElementInfo;
public ModelInfo ModelInfo;
public ConverterInfo ConverterInfo;
}
public struct XamlElementInfo
{
public XamlElementInfo(string ElementName, string ElementProperty)
{
this.ElementName = ElementName;
this.ElementProperty = ElementProperty;
}
[XmlAttribute]
public string ElementName;
[XmlAttribute]
public string ElementProperty;
}
public struct ModelInfo
{
public ModelInfo(string ModelName, string ModelProperty, string SendingValue)
{
this.ModelName = ModelName;
this.ModelProperty = ModelProperty;
this.SendingValue = SendingValue;
}
[XmlAttribute]
public string ModelName;
[XmlAttribute]
public string ModelProperty;
[XmlAttribute]
public string SendingValue;
}
public struct ConverterInfo
{
public ConverterInfo(string MaximumInput, string MinimumInput, string MaximumOutput, string MinimumOutput)
{
this.MaximumInput = MaximumInput;
this.MinimumInput = MinimumInput;
this.MaximumOutput = MaximumOutput;
this.MinimumOutput = MinimumOutput;
}
[XmlAttribute]
public string MaximumInput;
[XmlAttribute]
public string MinimumInput;
[XmlAttribute]
public string MaximumOutput;
[XmlAttribute]
public string MinimumOutput;
}
public struct ControlInfo
{
public ControlInfo(string XamlElementName, ModelInfo ModelInfo)
{
this.XamlElementName = XamlElementName;
this.ModelInfo = ModelInfo;
}
[XmlAttribute]
public string XamlElementName;
public ModelInfo ModelInfo;
}2011年11月24日 10:51
目前还没有答案
相关推荐
在反序列化时,必须确保数据的格式与序列化时一致,否则可能会导致错误或数据丢失。 通信协议,如HTTP、TCP/IP、SOAP和RESTful API,广泛依赖于序列化和反序列化。例如,HTTP请求体中的JSON数据就是经过序列化的...
4. **数据一致性**:如果不正确地处理序列化,可能会丢失对象的某些属性,导致数据不一致。 5. **安全**:序列化漏洞可能导致安全问题,例如反序列化攻击。 因此,选择合适的序列化工具至关重要。对于Java对象,...
.NET Framework中的XML序列化提供了强类型的数据处理能力。这主要是通过关联XML文档中的元素和属性的数据类型信息来实现的。具体来说: - **W3C XML Schema Definition (XSD) 语言:** 使用XSD来描述XML文档结构,...
序列化是指将对象转换为可存储或可传输的格式,如JSON、XML或二进制,而反序列化则是将这些格式的数据恢复为原始的对象形式。在iPhone应用开发中,苹果提供了内置的序列化框架,如NSKeyedArchiver和...
序列化和反序列化是计算机科学中的重要概念,特别是在数据存储、网络通信和对象持久化等领域。简单来说,序列化是将对象的状态转换为可存储或传输的数据格式,如文本或二进制流,而反序列化则是将这种数据转换回原始...
在C#中,可以使用各种类库来实现这一点,如`System.Xml.Serialization`用于XML序列化,`System.Runtime.Serialization.Formatters.Binary`用于二进制序列化,还有`Newtonsoft.Json`(Json.NET)库用于JSON序列化。...
同时,考虑到性能因素,选择合适的序列化格式(如二进制、XML或JSON)也很关键,不同的格式对数据大小、传输速度和可读性都有影响。 总之,TCP/IP中的序列化传输是分布式系统和网络通信的核心技术,它使得不同系统...
在序列化过程中,Hessian会将Java对象转换为字节流,反序列化时则将字节流恢复为原始对象。 1. **Hessian序列化流程** - 首先,Hessian序列化器会遍历Java对象的所有字段,对每个字段进行处理。 - 对于基本类型,...
这种方法相比于二进制序列化,XML格式的数据更易于人类阅读和调试,但其体积通常较大,且序列化和反序列化速度较慢。 对象序列化在实际应用中具有多种用途,例如: 1. 持久化:将对象的状态保存到磁盘,即使程序...
XmlSerializer 提供了更为灵活的XML序列化选项,允许你控制哪些成员应该被序列化。它产生的XML更纯净,没有SOAP的额外头部信息,适合于需要生成结构清晰的XML文档的情况。如果需要控制XML结构,如添加命名空间或...
3. **兼容性:** 都需要考虑跨平台和版本的兼容性问题,确保序列化后的数据能够在不同环境和版本下正确地被反序列化或读取。 #### 四、序列化与持久化的不同点 虽然序列化和持久化有很多相似之处,但它们之间也...
在计算机科学中,序列化是将对象的状态转换为可以存储或传输的数据格式的过程。这个过程通常是将对象转换成字节流,以便于保存在磁盘上、通过网络发送或者在不同时间点恢复对象状态。在Java等编程语言中,序列化是一...
在`apache-tomcat-7.0.47-memcached`的配置中,你需要选择合适的序列化策略,并将其配置在Tomcat的`context.xml`或`server.xml`文件中,通过`MemcachedSessionManager`来实现Session的存取。配置项可能包括序列化类...
或者,如果你选择XML序列化: ```csharp XmlSerializer serializer = new XmlSerializer(array.GetType()); using (TextWriter writer = new StreamWriter("array.xml")) { serializer.Serialize(writer, ...
序列化与反序列化 序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。一般将一个对象存储至一个储存媒介,例如档案或是记亿体缓冲等。在网络传输过程中,可以是字节或是XML等格式。而...
在C++编程中,对象序列化是一个重要的概念,它涉及到将程序中的对象状态转换为可以存储或传输的数据格式,如二进制或文本文件。这一过程通常用于持久化数据、跨进程通信或在网络上传输对象。在Visual C++环境下,...
不过,错误的序列化和反序列化可能导致数据丢失或程序出错。在MFC中,对象自行负责序列化,这虽然保护了类的内部结构,但也增加了编写和维护序列化代码的复杂性,且容易引入错误。 .NET的序列化机制提供了一种相对...
序列化是将对象的状态转化为可持久化的格式(如XML、JSON或二进制)的过程,使得数据可以在不丢失信息的情况下保存到硬盘或者在网络上传输。在银行储柜模拟中,这个过程可能涉及到将用户的账户信息(如账号、余额、...
1. 数据一致性:确保序列化和反序列化过程保持数据的一致性,防止丢失或错误地恢复游戏状态。 2. 安全性:防止恶意用户篡改保存的数据,影响游戏的公平性。 3. 兼容性:如果后续版本的游戏有变动,序列化方案需要...
在IT领域,结构体序列化和二进制文件读写是常见的数据存储和传输技术。这类技术主要用于将复杂的结构化数据转换成二进制格式,以便于高效地存储到磁盘或在网络上传输。以下是对"结构体序列化读写二进制文件类"这一...