2014-12-03 2 views
-1

У меня есть таблица данных, которая содержит приведенную ниже информацию.Настройка сериализации xml DataSet

enter image description here

Я хочу написать эту таблицу данных в 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> 

Я хочу к 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> 

Любая помощь была бы оценена.

+0

Почему у меня есть -1, пожалуйста, объясните? –

ответ

0

Я думаю, вы должны скопировать данные во временный стол с колоннами

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

и написать это XML

0

Я думаю, что в вашем случае вы должны реализовать IXmlSerializable и сделать свой 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 (добавить только курс) или нет (добавить весь узел)

Смежные вопросы