Нужна помощь в Linq, мне нужно добавить данные в список - PullRequest
0 голосов
/ 10 февраля 2012

Это структура моего файла XML.

<Resto>
<ID>2</ID>
<Name>name</Name>
<Category>categroty</Category>
<Places>
  <Address>
    <Location>loc</Location>
    <Number>num</Number>
    <Longitude>"empty"</Longitude>
    <Latitude>"empty"</Latitude>
  </Address>
</Places>
</Resto>

Долгота и Широта пусты, я не использую их сейчас, они для более поздних обновлений. А некоторые могут иметь более одного адреса:

<Address>
 <Location>loc</Location>
    <Number>num</Number>
    <Longitude>"empty"</Longitude>
    <Latitude>"empty"</Latitude>
  </Address>

Также я сделал этот запрос, который прекрасно работает:

var anything = from resto in appDataXml.Descendants("Resto")

                     select new limit()
                     {
                         ID = resto.Element("ID").Value,
                         Name = resto.Element("Name").Value,
                         Categories = resto.Element("Category").Value
                     };

У меня есть в классе ограничения:

    public string Name{get;set;}
    public string ID { get; set; }
    public string Categories{get;set;}
    public List<Address> Addresses { get; set; }

и "Address" - это другой класс с Location и Number get / set.

В любом случае, мой вопрос: как я могу запросить XML-файл и добавить местоположение и номер в список адресов, чтобы я мог добавить эти значения в ListBox.

Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 10 февраля 2012
var doc = XDocument.Load("test.xml");
List<Address> locations = (from address in doc.Root.Element("Places").Elements("Address")
         select new Address
         {
              Location = address.Element("Location").Value,
              Number = address.Element("Number").Value,
         }).ToList();

Убедитесь, что у вас есть корневой узел (например, <parent>):

<parent>
  <ID>1</ID>
  <Name></Name>
  <Category></Category>
  <Places>
    <Address>
      <Location></Location>
      <Number></Number>
    </Address>
    <Address>
      <Location></Location>
      <Number></Number>
    </Address>
  </Places>
</parent>

Обновление: Если ваш xml выглядит следующим образом:

<Restos>
  <Resto>
    <ID>1</ID>
    <Name>name</Name>
    <Category>categroty</Category>
    <Places>
      <Address>
        <Location>loc1</Location>
        <Number>num1</Number>
        <Longitude>"empty"</Longitude>
        <Latitude>"empty"</Latitude>
      </Address>
    </Places>
  </Resto>
  <Resto>
    <ID>2</ID>
    <Name>name</Name>
    <Category>categroty</Category>
    <Places>
      <Address>
        <Location>loc2</Location>
        <Number>num2</Number>
        <Longitude>"empty"</Longitude>
        <Latitude>"empty"</Latitude>
      </Address>
    </Places>
  </Resto>
</Restos>

Вы можете использовать этот код для его анализа:

var doc = XElement.Load("test2.xml");
List<Resto> restos = (from resto in doc.Elements("Resto")
                        select new Resto
                        {
                            ID = resto.Element("ID").Value,
                            Name = resto.Element("Name").Value,
                            Category = resto.Element("Category").Value,
                            Addresses = (from address in resto.Element("Places").Elements("Address")
                                        select new Address
                                        {
                                            Location = address.Element("Location").Value,
                                            Number = address.Element("Number").Value,
                                        }).ToList()
                        }).ToList();

Где Resto и Address определены как:

public class Resto
{
    public string ID { get; set; }
    public string Name { get; set; }
    public string Category { get; set; }
    public List<Address> Addresses { get; set; }
}

public class Address
{
    public string Location { get; set; }
    public string Number { get; set; }
}
0 голосов
/ 10 февраля 2012

Чтобы играть с данными XML, если вы используете .net версии 3.5, лучше для пользователя LINQ to XML .

http://www.codeproject.com/Articles/24376/LINQ-to-XML

или

Управление данными XML с помощью XPath и XmlDocument (C #)

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