c#将对象类转换为XML
我对将Class对象转换为XML文件有点新了。
我有一系列类
课堂:
c#将对象类转换为XML
class ClassRoom
{
private string m_sName = string.Empty;
public string Name
{
get { return m_sName; }
set { m_sName = value; }
}
private List<Student> students = null;
public List<Student> Students
{
get { return students == null ? students = new List<Student>() : students; }
set { students = value; }
}
private Teacher teacher = null;
public Teacher TeaccherforClassroom
{
get { return teacher == null ? teacher = new Teacher() : teacher; }
set { teacher = value; }
}
private Teacher subTeacher = null;
public Teacher SubTeaccherforClassroom
{
get { return subTeacher == null ? subTeacher = new Teacher() : subTeacher; }
set { subTeacher = value; }
}
internal class Student
{
private string name = string.Empty;
public string Name
{
get { return name; }
set { name = value; }
}
}
internal class Teacher
{
private string name = string.Empty;
public string Name
{
get { return name; }
set { name = value; }
}
}
}
而且 人民
class People
{
private List<Person> person = null;
public List<Person> Persons
{
get { return person == null ? person = new List<Person>() : person; }
set { person = value; }
}
internal class Person
{
private string name = string.Empty;
public string Name
{
get { return name; }
set { name = value; }
}
private int age = 0;
public int Age
{
get { return age; }
set { age = value; }
}
}
}
我需要像这样的东西翻译成这个XML:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Class roomNumber="201" date="JANUARY 31, 2016">
<ClassRoom Name="SCI101">
<Students Name="Tom">
<StudentNumber>545454</FundRiskMeasure>
</Students>
<Students Name="Jerry">
<StudentNumber>123456</FundRiskMeasure>
</Students>
<TeaccherforClassroom>
<Name>"Smith"</Name>
</TeaccherforClassroom>
<SubTeaccherforClassroom>
<Name>"Johnny"</Name>
</SubTeaccherforClassroom>
</ClassRoom>
<People>
<Persons Series="Peter">
<Age>22</Age>
</Persons>
<Persons Series="Jenny">
<Age>21</Age>
</Persons>
<Persons Series="John">
<Age>24</Age>
</Persons>
</People>
</Class>
我看着到XML可序列化,但它似乎是我的问题是一点challengi ng因为我可以在一个类中有一个新对象的列表。例如,教室里有一系列具有属性的学生。
我也有名字弹出节点<Students Name="Tom">
内,也可能弹出的属性
<TeaccherforClassroom>
<Name>"Smith"</Name>
</TeaccherforClassroom>
我只是想知道是否有将这些对象或者使用LINQ或类似的方式,而不是写一个简单的方法到XML,使用Streamwriter为每个类创建更“手动”。希望这很好解释。
让我知道你是否需要关于我所问的问题的更多信息。
此外,我正在使用Visual Studio 2010专业版。
你的类的所有成员都是静态的,据我所知没有串行化程序将序列化静态类/静态属性。也许你应该重新考虑静态修饰符。 作为一个简单的1班次解决方案,您可以使用System.Xml.Serialization.XmlSerializer进行简单的序列化/反序列化(对于非静态类/属性)。
我可以从中删除静态。我不知道它会影响XML序列化。我将数据提供给这些对象,因此如果它们是静态的,它们并不重要。你能告诉我,如果他们不是静态的,你会怎么做? –
请按照此教程https://support.microsoft.com/zh-cn/kb/815813。创建ClassRoom的实例(例如classRoom)并将其序列化为System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(classRoom.GetType()); x.Serialize(Console.Out,classRoom); –
序列化列表将使您自动陷入困境。 –
@rene对不起,我正在创建这些类,以便我可以在不创建实例的情况下调用该对象。如果有必要,我可以删除静态。 –
@FᴀʀʜᴀɴAɴᴀᴍ有另一种解决方案,我可以去? –