WP7 Как проанализировать XML?

#xml #windows-phone-7

#xml #windows-phone-7

Вопрос:

В wp7 я хочу проанализировать XML-тег

.Xml :

 <top>
<value name="Group A">
<team position="1" name="india" won="10" lose="5"/>
<team position="2" name="pakistan" won="5" lose="5"/>
</value>

<value name="Group B">
<team position="1" name="Aus" won="10" lose="5"/>
<team position="2" name="newzeland" won="5" lose="5"/>
</value>
</top>
  

я хочу выводить вот так,

 Group A

1  India 10  5
2  pak    5  10

Group B

1  Aus        5    5
2  Neszeland  5   5
  

Я использую синтаксический анализатор следующим образом,

  list = (from story in xmlTweets.Descendants("value")

                             select new ViewModel
                             {
                                 group= story.Attribute("name").Value,

                             }).ToList();

list1 = (from story in xmlTweets.Descendants("team")

                             select new ViewModel
                             {
                                 position= story.Attribute("position").Value,
name= story.Attribute("name").Value,
won= story.Attribute("won").Value,
lose= story.Attribute("lose").Value,

                             }).ToList();
  

вывод:

 Group A

Group B

1  India 10  5
2  pak    5  10

1  Aus        5    5
2  Neszeland  5   5
  

Пожалуйста, подскажите мне какую-нибудь идею для этого.

Спасибо.

Комментарии:

1. Ваш желаемый результат выглядит для меня как ваш фактический результат… что не так?

2. @Джон, в его выводе отсутствует механизм группировки.

3. Группировки @Jon печатаются первыми после печати списка. я хочу группу и список.

4. @MagnusJohansson: Ах да, теперь я понимаю…

5. @Джон, если ты знаешь это, подскажи мне какую-нибудь идею, как это сделать.

Ответ №1:

В настоящее время у вас есть два отдельных списка — один для групп и один для команд. Мне кажется, что ваша модель представления должна быть богаче — что-то вроде:

 list = xml.Descendants("value")
          .Select(group => new GroupViewModel
          {
              Group = (string) group.Attribute("name"),
              Results = group.Elements("team")
                             .Select(team => new TeamViewModel
                             {
                                 Position = (int) team.Attribute("position"),
                                 Name = (string) team.Attribute("name"),
                                 Won = (int) team.Attribute("won"),
                                 Lost = (int) team.Attribute("lose")
                             })
                             .ToList()
          })
          .ToList();
  

Комментарии:

1. что такое результаты? это строка или список?

2. @Jeeva: Это список ссылок TeamViewModel (обратите внимание на метод ToList), который должен быть в вашей модели представления. Вы ничего не сказали о том, как вы отображаете эти результаты, что затрудняет предоставление чего-либо более конкретного, чем это…

3. при возникновении этой ошибки не удается неявно преобразовать тип ‘System. Коллекции. Generic.List<ViewModel>’ в ‘строку’