当我序列化其中包含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
值被序列化为空字符串?
答案 0 :(得分:14)
您是否将DateOfBirthFieldSpecified
设为true
?它将默认为false
,这意味着:不要将其序列化。