Как создать класс из элементов XML? - PullRequest
0 голосов
/ 05 февраля 2012

У меня есть анонимный тип, используемый в запросе Linq, и я хочу сделать его классом вместо анонимного типа.

Поля: Возраст и узел XML, который имеет пару элементов. Как мне объявить класс, чтобы я мог получить доступ к элементам XML?

Вот частично объявленный класс:

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

Ответы [ 2 ]

1 голос
/ 05 февраля 2012

Может быть, это то, что вы ищете ..

Чтобы объяснить, я создал пример ..

Я создал класс ученика, который выглядит следующим образом

   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 в студента. Параметр Xmldata
  • создать запрос linq и создать список курсов

Надеюсь, это поможет вам

1 голос
/ 05 февраля 2012

Насколько я понимаю, у вас есть что-то вроде XML:

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

, и вы хотите представить это в классе ac #.Я бы предложил иметь 2 класса.1 для ученика, а затем еще один для внутреннего узла.

В вашем классе ученика у вас будут свойства:

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

Тогда вы сможете сделать Student.Inner.Node1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...