У меня проблема:)
У меня есть XML, скажем:
<?xml version="1.0" encoding="utf-16"?>
<Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SMTPserver port="25" user="aa" password="123" senderAddress="aa@aa.com">127.0.0.1</SMTPserver>
</Configuration>
У меня есть класс сериализации (обратите внимание, здесь показана только часть кода):
....
/// <summary>
/// SMTP server settings.
/// </summary>
[Serializable()]
public class SMTPserver
{
/// <summary>
/// Gets or sets the SMTP port.
/// </summary>
/// <value>
/// The SMTP port.
/// </value>
[XmlAttribute("port")]
public int Port
{ get; set; }
/// <summary>
/// Gets or sets the user if SMTP needs authentication.
/// </summary>
/// <value>
/// The SMTP user.
/// </value>
[XmlAttribute("user")]
public string User
{ get; set; }
/// <summary>
/// Gets or sets the password if SMTP needs authentication.
/// </summary>
/// <value>
/// The SMTP user password.
/// </value>
[XmlAttribute("password")]
public string Password
{ get; set; }
/// <summary>
/// Gets or sets the sender address. Email address which wil be set as Sender of the all emails.
/// </summary>
/// <value>
/// The sender address.
/// </value>
[XmlAttribute("senderAddress")]
public string SenderAddress
{ get; set; }
/// <summary>
/// Gets or sets the name of the SMTP server or IP address.
/// </summary>
/// <value>
/// The name of the SMTP server or his IP address.
/// </value>
[XmlText]
public string SMTPServerAddressOrName
{ get; set; }
}
...
У меня есть методы сериализации / десериализации. Для сериализации я использую этот метод:
/// <summary>
/// Serializes the specified data into XML string.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="data">The data.</param>
/// <returns>XML string</returns>
public static string Serialize<T>(T data)
{
string xmlText = String.Empty;
using (StringWriter XMLText = new StringWriter())
{
XmlSerializer xSerializer = new XmlSerializer(typeof(T));
xSerializer.Serialize(XMLText, data);
xmlText = XMLText.ToString();
}
return xmlText;
}
Обычно все работает нормально. Но я хотел бы создать из своего класса пустую (без данных) полную структуру XML (чтобы использовать ее в качестве примера для пользователя, какие записи можно использовать).
Я пытался:
// Configuration is my Serialization class.
// [Serializable()]
// [XmlRoot()]
Configuration cleanConfig = new Configuration();
string generatedXml = SettingsManager.Serialize<Configuration>(cleanConfig);
И результат:
<?xml version="1.0" encoding="utf-16"?>
<Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SMTPserver port="0"/>
</Configuration>
вместо
<SMTPserver port="0" user="" password="" senderAddress=""/>
Все свойства моего "пустого" класса конфигурации, которому присвоено значение NULL (это было сделано автоматически, поскольку это строка), были пропущены.
У меня есть больше элементов с типом String, и все они (с нулевым значением) были пропущены в сгенерированном XML. Обычно это нормально и хорошо, но в этом случае я хотел бы просто сгенерировать полный пример «XML-структуры», который будет правильным для моего приложения.