C# 如何使用.NET XmlSerializer以特殊格式序列化空值和空值
我想使用.NET XmlSerializer类将类对象序列化为XML字符串。空字符串和空字符串都应序列化 如果属性值为null,则XML格式如下C# 如何使用.NET XmlSerializer以特殊格式序列化空值和空值,c#,xml,C#,Xml,我想使用.NET XmlSerializer类将类对象序列化为XML字符串。空字符串和空字符串都应序列化 如果属性值为null,则XML格式如下 <property /> 如果属性值为空字符串,则序列化的XML格式为空 <property></property> 当需要自定义序列化时,需要实现自己的IXmlSerialization接口实现。这为XML序列化和反序列化提供了自定义格式。例如: public class Person : IXmlSe
<property />
如果属性值为空字符串,则序列化的XML格式为空
<property></property>
当需要自定义序列化时,需要实现自己的
IXmlSerialization
接口实现。这为XML序列化和反序列化提供了自定义格式。例如:
public class Person : IXmlSerializable
{
// Private state
private string personName;
// Constructors
public Person (string name)
{
personName = name;
}
public Person ()
{
personName = null;
}
// Xml Serialization Infrastructure
public void WriteXml (XmlWriter writer)
{
writer.WriteString(personName);
}
public void ReadXml (XmlReader reader)
{
personName = reader.ReadString();
}
public XmlSchema GetSchema()
{
return(null);
}
// Print
public override string ToString()
{
return(personName);
}
}
您可以在不初始化的情况下使用类的属性。它将像:
class XmlData{
public string Person;
public XmlData(){
Person=null;
}
}
class Program{
static void Main(){
var xmlTaplate=new XmlData();//in this step property Person is null
var serializer = new XmlSerializer(typeof(xmlTemplate));
using (TextWriter writer = new StreamWriter(@"person.xml"))
{
serializer.Serialize(writer, details);
}
}
}
谢谢你的回答。我有许多类需要序列化为XML。如果使用自定义xml序列化,将做大量工作。仅供参考,它不是C#XmlSerializer。它是.NET XmlSerializer。它不是特定于任何语言的。