C # XML-сериализация только сериализация одного элемента в списке - PullRequest
1 голос
/ 28 мая 2010

Учитывая некоторые примеры XML, такие как:

<XML>  
  <EMPLOYEES>    
    <EMPLOYEE isBestEmployee="false">John"<"/EMPLOYEE>  
    <EMPLOYEE isBestEmployee="true">Joe"<"/EMPLOYEE>  
    <EMPLOYEE isBestEmployee="false">Bill"<"/EMPLOYEE>  
  </EMPLOYEES>  
</XML>  

Как сериализовать только сотрудника с isBestEmployee="true" в один объект Employee?

Ответы [ 3 ]

1 голос
/ 28 мая 2010

У меня есть два ответа на этот вопрос, вот второй ответ:

Учитывая какой-либо список, как вы находите конкретное значение?

Вы просто должны разобрать список.


Теперь я предполагаю, что вы не знаете, как это сделать:

[XmlType("EMPLOYEES"), Serializable]
public class Employees {
   public Employee[] employee {get; set;}
}
[XmlType("EMPLOYEE")]
public class Employee {
   [XmlAttribute("isBestEmployee")]
   public bool bestEmployee {get; set;}
   [XmlText]
   public string name;
}

Вам следует десериализовать это (возможно, с помощью XmlSerializer), а затем вы можете проанализировать массив, используя foreach (Employee in Employees) или запрос LINQ, или любым другим способом.

Это отвечает на вопрос?

0 голосов
/ 28 мая 2010

Вы имеете в виду что-то подобное (может быть, linq выполняет тяжелую работу)?

 XDocument loaded = XDocument.Load(@"C:\YourXmlFile.xml"); //or xml in memory

         // Query the data and create the employee objects
        var q = from c in loaded.Descendants("EMPLOYEE")
                where (bool)c.Attribute("isBestEmployee") == true //"true"
                select new Employee() { Name = c.Value, isBestEmployee = (bool)c.Attribute("isBestEmployee") };


        //print out the list of employees if you want. 
        foreach (Employee e in q)
        {
           Console.WriteLine("Employee name = {0}, isBestEmployee = {1}", e.Name, e.isBestEmployee);
        }
0 голосов
/ 28 мая 2010

У меня есть два ответа на этот вопрос, вот первый ответ:

* ** 1003 тысяча два *http://www.csharp -examples.net / XML-узлы-по-атрибут-значение /
...