我有一个IList可以使用。
我可以遍历列表中的行并从中创建XML文件吗?如果是这样我将如何去做呢?
我一直试图掌握XDocument,但我没有看到如何使用这种方法循环IList。
答案 0 :(得分: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 :(得分:1)
分两行:
IList<string> list = new List<string> {"A", "B", "C"};
var doc = new XDocument(new XElement("Root", list.Select(x => new XElement("Child", x))));
不要忘记使用:
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
如果原始IList
是非通用IList
,则需要包含对Enumerable.Cast<T>()
的调用,以便Select()
可以正常工作。 E.g:
IList list = new List<string> {"A", "B", "C"};
var doc = new XDocument(new XElement("Root",
list.Cast<string>().Select(x => new XElement("Child", x))));
答案 2 :(得分: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)));