2014-12-04 4 views
0

У меня есть IList для работы.Создание XML-файла из IList

Могу ли я пропустить строки в списке и создать из него XML-файл? Если да, то как мне это сделать?

Я пытаюсь справиться с XDocument, но я не вижу, как я могу выполнить цикл через IList, используя этот метод.

+0

Вы можете создать строку и сохранить список значений переменных в строку и вызвать функцию Load для цикла через узлы – Haris

+4

Вы собираетесь должны быть более ясным. Что у вас есть список? На чем должен выглядеть ваш XML? – DoctorMick

+0

Можете ли вы показать контейнер списка здесь? И, конечно, ваша структура кода XDocument? – Johnny

ответ

0

Если вы только после того, как достаточно простой структуры из списка строк, то это будет работать:

var list = new List<string> { "Joe", "Jim", "John" }; 

var document = new XDocument(); 
var root = new XElement("Root"); 
document.Add(root); 
list.ForEach(x => root.Add(new XElement("Name", x))); 
+0

Мой список IList и IList не нравится. FOREach - не могли бы вы посоветовать? –

+0

Используйте. Выберите, как с решением @Alex Joukovsky. – DoctorMick

+0

Такая же проблема - IList не содержит определения для выбора, спасибо за помощь! –

1

Если вы хотите KISS, добавить System.Xml.Serialization в справочной литературе вы проекта и:

using System; 
using System.Collections.Generic; 
using System.Xml.Serialization; 

public class Program { 
    static void Main() { 
     List<string> Data=new List<string> { "A","B","C","D","E" }; 

     XmlSerializer XMLs=new XmlSerializer(Data.GetType()); 
     XMLs.Serialize(Console.Out,Data); 

     Console.ReadKey(true); 
    } 
} 

Я использовал Console.Out, чтобы дать вам быстрый однолинейный пример, но вы можете выбрать любой Stream, скорее всего, файл для записи.

1

В двух строках:

IList<string> list = new List<string> {"A", "B", "C"}; 
var doc = new XDocument(new XElement("Root", list.Select(x => new XElement("Child", x)))); 

не забывающие usings:

using System.Collections.Generic; 
using System.Linq; 
using System.Xml.Linq; 

Если оригинальный IList не является родовым IList, вам нужно будет включать призыв к Enumerable.Cast<T>() так, что Select() может работать. Например .:

IList list = new List<string> {"A", "B", "C"}; 
var doc = new XDocument(new XElement("Root", 
    list.Cast<string>().Select(x => new XElement("Child", x)))); 
+0

Мой список - это IList, а IList не нравится. Выберите - не могли бы вы посоветовать? –

+0

@MatthewHarris см. Редактирование. –

+0

Я использую все это, все еще имея те же проблемы –