我正在尝试从银色光源的XML文件中加载国家/地区名称及其城市。
我希望根据所选国家/地区将城市加载到ListPicker。
这是我的XML文件的一部分:
<Times>
<country name="USA">
<city name="Aaronsburg -- PA">
<state>PA</state>
<latitude>408739</latitude>
<longitude>-773815</longitude>
<timezone>-500</timezone>
<daylight>1</daylight>
</city>
<city name="Abbeville -- AL">
<state>AL</state>
<latitude>316077</latitude>
<longitude>-853051</longitude>
<timezone>-600</timezone>
<daylight>1</daylight>
</city>
<city name="Abbeville -- GA">
<state>GA</state>
<latitude>319710</latitude>
<longitude>-833016</longitude>
<timezone>-500</timezone>
<daylight>1</daylight>
</city>
<city name="Abbot -- ME">
<state>ME</state>
<latitude>453219</latitude>
<longitude>-695342</longitude>
<timezone>-500</timezone>
<daylight>1</daylight>
</city>
........
........
这就是我写的代码:
private void LoadButton_Click(object sender, RoutedEventArgs e)
{
XDocument doc = XDocument.Load("Athan.xml");
var definitions = doc.Document.Descendants(XName.Get("country"));
foreach (var definition in definitions)
{
if (definition.Attribute(XName.Get("name")).Value == CountryListPicker.SelectedItem.ToString())
{
var cities = definition.Document.Descendants(XName.Get("city"));
foreach (var city in cities)
{
CityListPicker.Items.Add(city.Attribute(XName.Get("name")).Value.ToString());
}
return;
}
}
}
城市在很长一段时间后加载,或者没有加载! 我的代码有问题吗?
答案 0 :(得分:0)
好吧,我可能完全偏离了这里,因为我对windows-phone-7一无所知,但我假设你的LoadButton_Click方法的核心是Linq到Xml。
如果是这种情况,我想知道你对.Document的调用,以及对XName的频繁调用。例如,在我看来,您的定义代码可能很简单,例如“var definitions = doc.Descendants(”country“);”同样适用于“var cities”行。
在处理属性时,您可以使用类似“CityListPicker.Items.Add(city.Attribute(”name“))的东西。值;”
由于数据至少在某些时候加载,我假设您没有名称空间问题,但您应该验证。
希望这会有所帮助。
答案 1 :(得分:0)
尝试添加
XDocument doc = XDocument.Load("Athan.xml");
XElement root = doc.Root;
foreach (XElement el in root.Descendants("Times"))
{
// code to navigate in your XML
if ( el.Name == "country"){
foreach ( XAttribute attr in el.Attributes())
{
if ( attr.name == "name"){
// receive your country name
String CountryName = attr.Value;
}
}
foreach (XElement city in el.Descendants())
{
if (city.Name == "city")
{
Object City = new Object(); // create your object...
foreach ( XAttribute attr in el.Attributes())
{
if ( attr.name == "state"){
City.sate = cityAttr.Value;
}
if ( attr.name == "latitude"){
City.latitude = cityAttr.Value;
}
// etc....
}
//You add your object city in list ( for example ) ...
}
}
我在加载我的xml时遇到问题,并且使用此方法加载了xml ...
希望这个解决方案可以帮助你...