C# 空字符串的xml序列化为nil

C# 空字符串的xml序列化为nil,c#,xml,serialization,C#,Xml,Serialization,在C#中,是否可以将空字符串序列化为nil值。 让我们以这样的对象为例: var myBook = new Book(){ Author = "John S.", ISBN = null }; 我想要: <Book> <Author>John S.</Author> <ISBN nil="true"/> </Book> 约翰S。 使用第三方xml序列化程序(如ExtendedXmlSerializer或YAXLib)是否

在C#中,是否可以将空字符串序列化为nil值。 让我们以这样的对象为例:

var myBook = new Book(){ Author = "John S.", ISBN = null };
我想要:

<Book>
  <Author>John S.</Author>
  <ISBN nil="true"/>
</Book>

约翰S。
使用第三方xml序列化程序(如ExtendedXmlSerializer或YAXLib)是否可以实现这样的结果

问候。

您可以尝试以下方法:

var myBook = new Book() { Author = "John S.", ISBN = null };
XmlSerializer xs = new XmlSerializer(typeof(Book));
StringWriter sw = new StringWriter();
xs.Serialize(sw, myBook);
Console.WriteLine(sw.ToString() );
您还需要添加一个属性:

public class Book
{
    public string Author { get; set; }
    [System.Xml.Serialization.XmlElement(IsNullable = true)]
    public string ISBN { get; set; }
}
结果:

<?xml version="1.0" encoding="utf-16"?>
<Book xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Author>John S.</Author>
  <ISBN xsi:nil="true" />
</Book>

约翰S。