如何从XML元素创建类?

时间:2012-02-05 05:43:16

标签: c# .net xml linq linq-to-xml

我有一个在Linq查询中使用的匿名类型,并希望将其设为类而不是匿名类型。

字段为:Age和具有多个元素的XML节点。如何声明类以便可以访问XML元素?

这是部分声明的类:

class Student {
    int Age;
    // ??? What to use here for the XML node? XElement? 
}

2 个答案:

答案 0 :(得分:1)

据我所知,你有一些像这样的XML:

<student>
    <age></age>
    <innerNode>
        <node1></node1>
        <node2></node2>
    <innerNode>
</student>

并且您希望在c#类中表示它。我建议有2节课。 1为学生,然后另一个为innerNode。

在您的学生班中,您将拥有以下属性:

int Age { get; };
innerNodeClass Inner { get; }

然后你就可以做Student.Inner.Node1。

答案 1 :(得分:1)

也许这就是你要找的......

解释我已经创建了一个例子..

我创建了一个看起来像这样的学生班级

   public class Student
{
    public int Age { get; set; }
    public string XmlData { get; set; }

    public Student()
    {

    }


}

我创建了课程课程。此类将由xml

中的值启动
   public class Course
{
    public string Name { get; set; }
    public int Grade { get; set; }

    public Course()
    {

    }
}

现在查看代码......

Student student = new Student();
        student.Age = 120;
        student.XmlData = "<root><courses><course id='0'><name>Name a</name><grade>88</grade></course><course id='1'><name>Name a</name><grade>88</grade></course><course id='2'><name>Name a</name><grade>88</grade></course><course id='3'><name>Name a</name><grade>88</grade></course></courses></root>";

        XDocument doc = XDocument.Parse(student.XmlData);

        List<Course> coursesData = (from c in doc.Element("root").Element("courses").Elements("course")
                                   select new Course()
                                              {
                                                  Name = c.Element("name").Value,
                                                  Grade = Convert.ToInt16(c.Element("grade").Value)
                                              }).ToList();
  • 创建学生的新实例。
  • 为年龄插入值120
  • 将xml值插入student.Xmldata参数
  • 创建linq查询并启动课程列表

我希望它可以帮到你