是否可以从XML文件创建多个对象?

时间:2015-06-30 09:46:16

标签: c#

public class xmlvalues
{
    public int    id { get; set; }
    public string a { get; set; }
    public string b { get; set; }
    public string c { get; set; }
}

-- XML Example
<instance>
  <id>>1</id>
  <a>value 1A</a>
  <b>value 1B</b>
  <c>value 1C</c>
</instance>


<instance>
  <id>>2</id>
  <a>value 2A</a>
  <b>value 2B</b>
  <c>value 2C</c>
</instance>

使用上面的例子可以为每个&#34;实例&#34;创建一个对象。 XML文件中的节点?在这个例子中,将有2个对象的实例&#34; xmlvalues&#34;但理论上可能会有更多。有一个简单的方法吗?

2 个答案:

答案 0 :(得分:2)

使用列表

using System.Xml.Linq;

XDocument xdoc = XDocument.Load(@"...\path\document.xml");

List<xmlvalues> lists = (from lv1 in xdoc.Descendants("instance")
                       select new xmlvalues
                       {
                           id = lv1.Element("id"),
                           a= lv1.Element("a"),
                           b= lv1.Element("b"),
                           c= lv1.Element("c")
                       }).ToList();

答案 1 :(得分:0)

一种方法,你必须调整你的xpath:

using System.Xml.XPath;
using System.Xml.Linq;

foreach  (XElement el  in xdoc.Root.XPathSelectElements ( "instance" ) ) { 
     //do something with el
}

这比.Descendants()更快,因为它不必检查所有节点,只检查在x路径上找到的节点(&#34;实例&#34;在上述情况下)