我正在尝试使用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; }
}
}
}
}
答案 0 :(得分:1)
您正试图从没有属性的元素中获取属性值。
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
。
答案 1 :(得分:1)
您的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")
};