2016-02-11 161 views
0

我对将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专业版。

+0

序列化列表将使您自动陷入困境。 –

+0

@rene对不起,我正在创建这些类,以便我可以在不创建实例的情况下调用该对象。如果有必要,我可以删除静态。 –

+0

@FᴀʀʜᴀɴAɴᴀᴍ有另一种解决方案,我可以去? –

回答

0

你的类的所有成员都是静态的,据我所知没有串行化程序将序列化静态类/静态属性。也许你应该重新考虑静态修饰符。 作为一个简单的1班次解决方案,您可以使用System.Xml.Serialization.XmlSerializer进行简单的序列化/反序列化(对于非静态类/属性)。

+0

我可以从中删除静态。我不知道它会影响XML序列化。我将数据提供给这些对象,因此如果它们是静态的,它们并不重要。你能告诉我,如果他们不是静态的,你会怎么做? –

+0

请按照此教程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); –