#c# #.net #xml-serialization
#c# #.net #xml-сериализация
Вопрос:
При сериализации объекта XmlSerializer с использованием приведенного ниже кода я получаю
<?xml version="1.0" encoding="UTF-8"?>
Код:
private static bool StudentsReport(string filePath, Students std)
{
XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty });
XmlSerializer serializer = new XmlSerializer(typeof(Students));
XmlWriterSettings settings = new XmlWriterSettings
{
Indent = true,
OmitXmlDeclaration = true,
};
using (XmlWriter writer = XmlWriter.Create(filePath, settings))
{
serializer.Serialize(writer , std, namespaces );
}
return true;
}
Класс Student — это :
public class Students
{
private string studentID;
private string studentName;
/// <summary>
/// To store Machine Details.
/// </summary>
public string ID
{
get { return this.studentID; }
set { this.studentID = value; }
}
[System.Xml.Serialization.XmlAttributeAttribute()]
public string Name
{
get { return this.studentName; }
set { this.studentName = value; }
}
}
Комментарии:
1. Приведенный выше код генерирует XML без автономного
Ответ №1:
Добавьте standalone
значение, используя WriteStartDocument
метод.
XmlWriterSettings settings = new XmlWriterSettings
{
Indent = true,
//OmitXmlDeclaration = true, // must be false
};
using (XmlWriter writer = XmlWriter.Create(filePath, settings))
{
writer.WriteStartDocument(standalone: true);
serializer.Serialize(writer, std, namespaces);
}
Несколько советов.
Переименуйте Students
класс в Student
. Потому что он описывает одного ученика, а не коллекцию.
ID
свойство переименовать в Id
. Смотрите Рекомендации по именованию
Измените сигнатуру метода: void StudentReport
. Не имеет смысла всегда возвращать одно и то же значение bool .