面试题答案
一键面试实现思路
- 定义类结构:按照题目要求定义
Teacher
类和Student
类,并确保属性设置为可序列化。 - 使用
XmlSerializer
:通过XmlSerializer
类来进行序列化操作。 - 自定义命名空间:利用
XmlSerializerNamespaces
类来为生成的XML文档自定义命名空间。
关键代码片段
using System;
using System.Xml;
using System.Xml.Serialization;
// 学生类
public class Student
{
[XmlElement("StudentName")]
public string Name { get; set; }
// 其他复杂关联属性
[XmlElement("StudentSpecialAttribute")]
public string SpecialAttribute { get; set; }
}
// 教师类
public class Teacher
{
[XmlElement("TeacherName")]
public string Name { get; set; }
[XmlArray("StudentsList")]
[XmlArrayItem("Student")]
public Student[] Students { get; set; }
}
class Program
{
static void Main()
{
Teacher teacher = new Teacher
{
Name = "Mr. Smith",
Students = new[]
{
new Student { Name = "Alice", SpecialAttribute = "High GPA" },
new Student { Name = "Bob", SpecialAttribute = "Good at sports" }
}
};
XmlSerializer serializer = new XmlSerializer(typeof(Teacher));
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("custom", "http://www.example.com/custom-namespace");
using (XmlWriter writer = XmlWriter.Create("teacher.xml", new XmlWriterSettings { Indent = true }))
{
serializer.Serialize(writer, teacher, ns);
}
}
}
上述代码实现了将具有嵌套结构的Teacher
对象序列化为XML,并为生成的XML文档自定义了命名空间。XmlSerializerNamespaces
类的Add
方法用于添加命名空间前缀和对应的URI。在序列化时传入该命名空间对象,即可在生成的XML文档中使用自定义命名空间。