C# 自定义数据集的xml序列化

C# 自定义数据集的xml序列化,c#,.net,xml,datatable,schema,C#,.net,Xml,Datatable,Schema,我有一个包含以下信息的数据表 我想将这个数据表写入xml,所以我使用了WriteXml方法,生成了下面的xml <?xml version="1.0" standalone="yes"?> <DocumentElement> <Person> <Name>Person1</Name> <Contact>Fred Nurk</Contact> <CourseName>Cou

我有一个包含以下信息的数据表

我想将这个数据表写入xml,所以我使用了
WriteXml
方法,生成了下面的xml

<?xml version="1.0" standalone="yes"?>
<DocumentElement>
  <Person>
    <Name>Person1</Name>
    <Contact>Fred Nurk</Contact>
    <CourseName>Course 1</CourseName>
    <CourseTime>09:00</CourseTime>
  </Person>
  <Person>
    <Name>Person1</Name>
    <Contact>Fred Nurk</Contact>
    <CourseName>Course 2</CourseName>
    <CourseTime>10:00</CourseTime>
  </Person>
</DocumentElement>

人1
弗雷德·努克
课程1
09:00
人1
弗雷德·努克
课程2
10:00
我希望xml能够将同一个人的课程组合起来,这样xml就会如下所示

<?xml version="1.0" standalone="yes"?>
<DocumentElement>
  <Person>
    <name>Person1</name>
    <contact>Fred Nurk</contact>
      <Courses>
        <Course>
          <courseName>Course 1</courseName>
          <courseTime>09:00</courseTime>
        </Course>
        <Course>
          <courseName>Course 2</courseName>
          <courseTime>10:00</courseTime>
        </Course>
      </Courses>    
  </Person>
</DocumentElement>

人1
弗雷德·努克
课程1
09:00
课程2
10:00

任何帮助都将不胜感激。

我认为您必须将数据复制到包含列的临时表中

<name> <contact> <coursename1> <coursetime1> <coursename2> <coursetime2> <coursenameX> <coursetimeX> <coursenameX> <coursetimeX> <..and so on>


并将其写入XML

我认为在您的情况下,您应该实现并生成您想要的XML

实施方法

public XmlSchema GetSchema()
{
    return null; //this should remain equal
}

public void ReadXml(XmlReader reader)
{
   throw new NotImplementedException();
}

public void WriteXml(XmlWriter writer)
{
    //group your list of Person as you want then
    foreach (Person person in list)
    {
        writer.WriteStartElement("Persons");
        person.WriteXml(writer);
        writer.WriteEndElement();
    }
}

WriteXml
函数中,您可以检查每个元素,看此人是否已经在xml中(仅添加课程)或没有(添加整个节点)

为什么我得到了-1,请解释一下?