我有一个IList可以使用。从IList创建XML文件
我可以遍历列表中的行并从中创建一个XML文件吗?如果是的话,我会怎么做呢?
我一直在试图去掌握XDocument,但我没有看到我可以通过使用这种方法循环IList。
我有一个IList可以使用。从IList创建XML文件
我可以遍历列表中的行并从中创建一个XML文件吗?如果是的话,我会怎么做呢?
我一直在试图去掌握XDocument,但我没有看到我可以通过使用这种方法循环IList。
如果你只是从字符串列表一个相当简单的结构之后是那么这将工作:
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)));
我的列表是IList,IList不喜欢.ForEach - 你能提供建议吗? – 2014-12-04 12:34:52
使用。选择与@Alex Joukovsky提供的解决方案一样。 – DoctorMick 2014-12-04 12:38:11
同样的问题 - IList不包含select的定义,感谢您的帮助! – 2014-12-04 12:42:56
如果你想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
,这很可能是要写入的文件。
在两行:
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))));
我的列表是IList,IList不喜欢。选择 - 你能提供建议吗? – 2014-12-04 12:54:31
@MatthewHarris见编辑。 – 2014-12-04 12:56:32
我正在使用所有这些,仍然存在相同的问题 – 2014-12-04 13:43:01
您可以创建一个字符串,列表值保存到变量字符串,并通过 – Haris 2014-12-04 11:35:04
你将需要更加明确的节点呼叫负载功能循环。你有什么清单?你的XML需要什么样子? – DoctorMick 2014-12-04 11:35:13
你可以在这里显示你的清单容器吗?当然,你的XDocument代码结构? – Johnny 2014-12-04 11:35:54