2012-02-05 2 views
0

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

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

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

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

Определение типа, как и в анонимный класс. –

ответ

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 запрос и начать список курсов

Я надеюсь, что это поможет вам

+0

Большое спасибо. Это направление, в котором я нуждаюсь. – user763554

1

Из того, что я понимаю, у вас есть некоторые XML-то вроде этого:

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

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

В классе Student вы будете иметь свойства:

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

Тогда вы будете в состоянии сделать Student.Inner.Node1.

Смежные вопросы