【问题标题】:How do I create a class from XML elements?如何从 XML 元素创建类?
【发布时间】:2012-02-05 05:43:15
【问题描述】:

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

这些字段是:Age 和一个包含几个元素的 XML 节点。如何声明类以便可以访问 XML 元素?

这是部分声明的类:

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

【问题讨论】:

  • 在匿名类中定义类型。

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


【解决方案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 查询并启动课程列表

希望对你有帮助

【讨论】:

  • 非常感谢。这是我需要的方向。
【解决方案2】:

据我了解,您有一些类似这样的 XML:

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

并且您想在 c# 类中表示它。我建议有 2 节课。 1 个用于 Student,然后另一个用于 innerNode。

在您的 Student 类中,您将拥有以下属性:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-15
    • 2016-06-11
    • 1970-01-01
    • 1970-01-01
    • 2013-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多