当我序列化一个有DateTime的对象时,它在
XML字符串中返回空.
请参阅下面的XSD,从XSD生成的可序列化类,以及处理XSD序列化的序列化助手类.
XSD:
<?xml version="1.0" encoding="utf-8"?> <xs:schema id="test" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="testinformation"> <xs:complexType> <xs:sequence> <xs:element name="DateOfBirth" minOccurs="0"> <xs:simpleType> <xs:restriction base="xs:date"> <xs:pattern value="\d{4}-\d{2}-\d{2}" /> </xs:restriction> </xs:simpleType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
串行:
/// <summary> /// This static class provides methods which can be used to help with common xml serialiazation tasks. /// </summary> public static class XmlSerializationHelper { public static string SerializeObject<ObjectToSerialize>(ObjectToSerialize obj) { string responseXML = string.Empty; using (MemoryStream ms = new MemoryStream()) using (StreamWriter output = new StreamWriter(ms,Encoding.UTF8)) using (StreamReader sr = new StreamReader(ms,Encoding.UTF8)) { XmlSerializer xmlSerializer = new XmlSerializer(typeof(ObjectToSerialize)); xmlSerializer.Serialize(output,obj); ms.Position = 0; responseXML = sr.ReadToEnd(); } return responseXML; } }
可序列化的类
//------------------------------------------------------------------------------ // <auto-generated> // This code was generated by a tool. // Runtime Version:2.0.50727.3607 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // </auto-generated> //------------------------------------------------------------------------------ // // This source code was auto-generated by xsd,Version=2.0.50727.42. // using System.Xml.Serialization; /// <remarks/> [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd","2.0.50727.42")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)] [System.Xml.Serialization.XmlRootAttribute(Namespace="",IsNullable=false)] public partial class testinformation { private System.DateTime dateOfBirthField; private bool dateOfBirthFieldSpecified; /// <remarks/> [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] public System.DateTime DateOfBirth { get { return this.dateOfBirthField; } set { this.dateOfBirthField = value; } } /// <remarks/> [System.Xml.Serialization.XmlIgnoreAttribute()] public bool DateOfBirthSpecified { get { return this.dateOfBirthFieldSpecified; } set { this.dateOfBirthFieldSpecified = value; } } }
为什么将DateTime值序列化为空字符串?
解决方法
你是否将DateOfBirthFieldSpecified设置为true?它将默认为false,这意味着:不要序列化它.
原文地址:https://www.jb51.cc/csharp/96657.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。