Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用.NET XmlSerializer以特殊格式序列化空值和空值_C#_Xml - Fatal编程技术网

C# 如何使用.NET XmlSerializer以特殊格式序列化空值和空值

C# 如何使用.NET XmlSerializer以特殊格式序列化空值和空值,c#,xml,C#,Xml,我想使用.NET XmlSerializer类将类对象序列化为XML字符串。空字符串和空字符串都应序列化 如果属性值为null,则XML格式如下 <property /> 如果属性值为空字符串,则序列化的XML格式为空 <property></property> 当需要自定义序列化时,需要实现自己的IXmlSerialization接口实现。这为XML序列化和反序列化提供了自定义格式。例如: public class Person : IXmlSe

我想使用.NET XmlSerializer类将类对象序列化为XML字符串。空字符串和空字符串都应序列化

如果属性值为null,则XML格式如下

<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。它不是特定于任何语言的。