2014-02-28 47 views
0

我需要将xml转换为特定格式的列表,并且我无法弄清楚如何处理。如何将xml转换为C#或VB中的列表?

下面是xml的结构。在“项目”下,可能有未知数量的未知项目和值。

enter image description here

我怎样才能转化为类似下面的列表?我拥有的课程如下。

enter image description here

基本上,这样的。那里可以有任何数量的物品。

enter image description here

最后使用它像

var items = new List<item>(); 

我希望有人能帮助我。

+1

了解的LINQ to XML。 – SLaks

+0

您是否正在使用'XmlSerializer'来执行此操作,或者您打算使用'XmlDocument'还是'XDocument'?你试过什么了? – LB2

+0

@ LB2 ..你好,我已经尝试了两个。我试过XmlSerializer。如果我拥有所有属性为unknown1的类结构,那么它的效果很好,但是我只是不知道如何动态地执行它。 – lawphotog

回答

2

您可以使用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); 

     })); 
+1

谢谢。我不知道在Linq中使用SelectMany。 – lawphotog

0

有几种方法。我更喜欢将对象序列化为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>