我需要将xml转换为特定格式的列表,并且我无法弄清楚如何处理。如何将xml转换为C#或VB中的列表?
下面是xml的结构。在“项目”下,可能有未知数量的未知项目和值。
我怎样才能转化为类似下面的列表?我拥有的课程如下。
基本上,这样的。那里可以有任何数量的物品。
最后使用它像
var items = new List<item>();
我希望有人能帮助我。
我需要将xml转换为特定格式的列表,并且我无法弄清楚如何处理。如何将xml转换为C#或VB中的列表?
下面是xml的结构。在“项目”下,可能有未知数量的未知项目和值。
我怎样才能转化为类似下面的列表?我拥有的课程如下。
基本上,这样的。那里可以有任何数量的物品。
最后使用它像
var items = new List<item>();
我希望有人能帮助我。
您可以使用LINQ to XML
var xDoc = XDocument.Load("path");
var items = xDoc.Root.Descendants("item")
.SelectMany(x => x.Descendants()
.Select(a => new Item
{
field = a.Name.ToString(),
value = (string) a);
}));
谢谢。我不知道在Linq中使用SelectMany。 – lawphotog
有几种方法。我更喜欢将对象序列化为xml并再次返回。
写信给你的XML文件:
var writer = new System.Xml.Serialization.XmlSerializer(typeof(List<String>));
var xmlFile = new StreamWriter("path\\to\\file.xml"));
writer.Serialize(xmlFile, FileInfo);
,然后从中读取:
var readFile = new StreamReader("path\\to\\file.xml");
var reader = new System.Xml.Serialization.XmlSerializer(typeof(List<String>));
var oData = (List<String>)reader.Deserialize(readFile);
编辑补充: 要使用自己的类,只需用你的类名称替换List<String>
。
了解的LINQ to XML。 – SLaks
您是否正在使用'XmlSerializer'来执行此操作,或者您打算使用'XmlDocument'还是'XDocument'?你试过什么了? – LB2
@ LB2 ..你好,我已经尝试了两个。我试过XmlSerializer。如果我拥有所有属性为unknown1的类结构,那么它的效果很好,但是我只是不知道如何动态地执行它。 – lawphotog