2016-01-05 1 views
1

Я новичок в работе с XML в C#. У меня есть требование объединить несколько полей в одну запись. Например, у меня есть XML с несколькими записями:Объединить XML-поля в одной записи

Вход

<Students>---------------------->1st Record 
     <Validate>True</Validate> 
     <StudentName>Joe</StudentName> 
     <ID>1</ID> 
     <BookName>C#</BookName> 
</Students> 
<Students>----------------------->2nd Record 
     <StudentName>Van</StudentName> 
     <ID>2</ID> 
     <BookName>Java</BookName> 
</Students> 

Поле <validate> будет происходить только один раз и ожидаемый выход в том, что вторая запись под студентов т.е. StudentName, ID, BookName должен подпадать под первой записи <Students> теге

Выходной

<Students>------------------->Both record should be added to one Record 
     <Validate>True</Validate> 
     <StudentName>Joe</StudentName> 
     <ID>1</ID> 
     <BookName>C#</BookName> 
     <StudentName>Van</StudentName> 
     <ID>2</ID> 
     <BookName>Java</BookName> 
</Students> 

ответ

1

Самый простой способ - использовать LINQ to XML. Вы разбора XML, получить все дочерние элементы в каждом Students элемент и поместить их в один новый элемент Students:

var doc = XDocument.Parse(xml); 

var children = doc.Descendants("Students") 
    .Elements(); 

var newStudents = new XElement("Students", children); 

См this fiddle для рабочего примера.