我有一個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