Linq to Xml выбор элементов - PullRequest
       24

Linq to Xml выбор элементов

1 голос
/ 22 апреля 2011

У меня есть этот XML-файл:

<?xml version="1.0" encoding="utf-8" ?>
<Calendar>
    <item id="34">
      <Date>26 Apr</Date>
      <Name>aa</Name>
      <Date>26 Apr</Date>
      <Name>aaa</Name>
      <Date>23 Apr</Date>
      <Name>aaaa</Name>
      <Date>23 Apr</Date>
      <Name>aaaaa</Name>    
    </item>  
    <item id="35">
      <Date>27 Apr</Date>
      <Name>aa</Name>
      <Date>27 Apr</Date>
      <Name>aaa</Name>
      <Date>27 Apr</Date>
      <Name>aaaa</Name>
      <Date>27 Apr</Date>
      <Name>aaaaa</Name>    
    </item>  
</Calendar>

это мой класс

public class Calendar
    {
        public string Name{ get; set; }
        public string Data { get; set; }

    }


listBox.ItemsSource = 
from var in xml.Descendants("item")
orderby Convert.ToInt32(var.Attribute("id").Value) ascending
select new Calendar
   {
        Name= var.Element("Name").Value,
        Data = var.Element("Data ").Value,

};

но в listBox у меня есть только первая дата и имя каждого элемента

Ответы [ 2 ]

2 голосов
/ 22 апреля 2011

Программа занятий { static void Main (строка [] args) {

  XDocument xml =
    XDocument.Load(
      @"Path to your xml");

  var q = from x in xml.Descendants("item")
          orderby Convert.ToInt32(x.Attribute("id").Value) ascending
          select new Calendar
                   {
                     Name = x.Elements("Name").Select(a => a.Value).ToList<String>(),
                     Date = x.Elements("Date").Select(a => a.Value).ToList<String>()
                   };

  List<Calendar> calendars = q.ToList<Calendar>();
}

public class Calendar
{
  public List<String> Name { get; set; }
  public List<String> Date { get; set; }  
} 

}

2 голосов
/ 22 апреля 2011

XElement.Element(elementName) получает только первый элемент, соответствующий elementName.Попробуйте другой подход, используя XElement.Elements(elementName)

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