Reputation: 115
i'm trying to create an application with Windows Phone 7, which displays data from a specific URI, but it won't work. I'm stack,help me please. This is my 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>
This is my c# code:
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; }
}
}
}
}
Upvotes: 0
Views: 395
Reputation: 167516
Your forecast_conditions
don't have any attributes, they have child elements instead which then have data
attributes. So instead of
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
};
use
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")
};
Upvotes: 1
Reputation: 5573
You are trying to get attribute values from the an element without attributes.
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
};
The element c
of type forecast_conditions
has an element day_of_week
. Then this element has an attribute data
.
Upvotes: 1