Проблема чтения XML с WP7 - PullRequest
0 голосов
/ 18 июля 2011

Я пытаюсь создать приложение с Windows Phone 7, которое отображает данные с определенного URI, но это не сработает.Я стек, помогите мне, пожалуйста.Это мой XML:

<?xml version="1.0" encoding="utf-8" ?>
<weather module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1" row="0" section="0">
    <forecast_conditions>
        <day_of_week data="lun."/>
        <low data="28"/>
        <high data="38"/>
        <icon data="/ig/images/weather/mostly_sunny.gif"/>
        <condition data="Partiellement ensoleillé"/>
    </forecast_conditions>
    <forecast_conditions>
        <day_of_week data="mar."/>
        <low data="27"/>
        <high data="39"/>
        <icon data="/ig/images/weather/sunny.gif"/>
        <condition data="Temps clair"/>
    </forecast_conditions>
    <forecast_conditions>
        <day_of_week data="mer."/>
        <low data="25"/>
        <high data="38"/>
        <icon data="/ig/images/weather/mostly_sunny.gif"/>
        <condition data="Ensoleillé dans l'ensemble"/>
    </forecast_conditions>
    <forecast_conditions>
        <day_of_week data="jeu."/>
        <low data="24"/>
        <high data="33"/>
        <icon data="/ig/images/weather/mostly_sunny.gif"/>
        <condition data="Ensoleillé dans l'ensemble"/>
    </forecast_conditions>
</weather>

Это мой код C #:

namespace WEATHER2
{
    public partial class MainPage : PhoneApplicationPage
    {
        // Constructeur
        public MainPage()
        {
            InitializeComponent();
            XDocument doc = XDocument.Load("Gweather.xml");
            var x= from c in doc.Descendants("forecast_conditions")
            select new Weather_Element()
             {
                 Day = (string)c.Attribute("day_of_week").Value,
                 Low = (string)c.Attribute("low").Value,
                 High = (string)c.Attribute("high").Value,
                 Condition = (string)c.Attribute("condition").Value
              };
             listBox1.ItemsSource = x;
        }

        public class Weather_Element
        {
            string day;
            string low;
            string high;
            string condition;

            public string Day
            {
               get { return day; }
               set { day = value; }
            }
            public string Low
            {
               get { return low; }
               set { low = value; }
            }
            public string High
            {
               get { return high; }
               set { high = value; }
            }
            public string Condition
            {
               get { return condition; }
               set { condition = value; }
            }
        }
    }
}

Ответы [ 2 ]

1 голос
/ 18 июля 2011

Ваши forecast_conditions не имеют никаких атрибутов, вместо этого они имеют дочерние элементы, которые затем имеют атрибуты data. Так что вместо

        var x= from c in doc.Descendants("forecast_conditions")
        select new Weather_Element()
         {
             Day = (string)c.Attribute("day_of_week").Value,
             Low = (string)c.Attribute("low").Value,
             High = (string)c.Attribute("high").Value,
             Condition = (string)c.Attribute("condition").Value
          };

использование

        var x= from c in doc.Descendants("forecast_conditions")
        select new Weather_Element()
         {
             Day = (string)c.Element("day_of_week").Attribute("data"),
             Low = (string)c.Element("low").Attribute("data"),
             High = (string)c.Element("high").Attribute("data"),
             Condition = (string)c.Element("condition").Attribute("data")
          };
1 голос
/ 18 июля 2011

Вы пытаетесь получить значения атрибутов из элемента a без атрибутов.

var x = from c in doc.Descendants("forecast_conditions")
select new Weather_Element()
{
    Day = c.Element("day_of_week").Attribute("data").Value,
    Low = c.Element("low").Attribute("data").Value,
    High = c.Element("high").Attribute("data").Value,
    Condition = c.Element("condition").Attribute("data").Value
};

Элемент c типа forecast_conditions имеет элемент day_of_week.Тогда этот элемент имеет атрибут data.

...