2015-11-25 3 views
-1

У меня есть следующий XML:Объединить элементы XML

<Books> 
    <Title>Book 1</Title> 
    <Author>A</Author> 
</Books> 
<Books> 
    <Title>Book 2</Title> 
    <Author>B</Author> 
</Books> 

Выход:

<Books> 
    <Title>Book 1</Title> 
    <Author>A</Author> 
    <Title>Book 2</Title> 
    <Author>B</Author> 
</Books> 

Я хотел бы написать в C#, чтобы получить результат, как выход, что я должен делать?

+3

А что вы пытались достичь этого? Где ваш код C#? –

ответ

0

В этом примере newDoc будет содержать то, что вы хотите

var xml = @" 
<xml> 
    <Books> 
     <Title>Book 1</Title> 
     <Author>A</Author> 
    </Books> 
    <Books> 
     <Title>Book 2</Title> 
     <Author>B</Author> 
    </Books> 
</xml>"; 

var originalElements = XDocument.Parse(xml).Root.Elements("Books").Descendants(); 
var newDoc = new XDocument(new XElement("Books", originalElements)); 
+0

спасибо, за ваш ответ :) – Piseth

1

Создать этот класс:

using System; 
using System.Xml.Serialization; 
using System.Collections.Generic; 
namespace Xml2CSharp 
{ 
    [XmlRoot(ElementName="Books")] 
    public class Books { 
     [XmlElement(ElementName="Title")] 
     public List<string> Title { get; set; } 
     [XmlElement(ElementName="Author")] 
     public List<string> Author { get; set; } 
    } 

} 

И разобрать ваш XML с XMLReader

Но ваш XML не очень хорошо сформированы. я Recommand что-то вроде этого:

<Books> 
<Book> 
<Title>Book 1</Title> 
    <Author>A</Author> 
</Book> 
<Book>  
    <Title>Book 2</Title> 
    <Author>B</Author> 
    </Book> 
</Books> 
+0

Нет необходимости в книгах и книжных бирках. Не соглашайтесь с тем, что это плохо сформировано. – jdweng

+0

Xavier W. - спасибо за ваше предложение, если мой XML-вывод похож на то, что он недействителен в отношении XSD – Piseth

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