因此,我开始学习如何在应用程序中使用 XML 数据,并决定使用一些免费数据来执行此操作,但是我一辈子都无法让它工作,这是我的代码。(我之前做过一些使用静态数据的应用程序,但是嘿应用程序是为使用网络而设计的,对吗?:p)
public partial class MainPage : PhoneApplicationPage
{
List<XmlItem> xmlItems = new List<XmlItem>();
// Constructor
public MainPage()
{
InitializeComponent();
LoadXmlItems("http://hatrafficinfo.dft.gov.uk/feeds/datex/England/CurrentRoadworks/content.xml");
test();
}
public void test()
{
foreach (XmlItem item in xmlItems)
{
testing.Text = item.Title;
}
}
public void LoadXmlItems(string xmlUrl)
{
WebClient client = new WebClient();
client.OpenReadCompleted += (sender, e) =>
{
if (e.Error != null)
return;
Stream str = e.Result;
XDocument xdoc = XDocument.Load(str);
***xmlItems = (from item in xdoc.Descendants("situation id")
select new XmlItem()
{
Title = item.Element("impactOnTraffic").Value,
Description = item.Element("trafficRestrictionType").Value
}).ToList();***
// close
str.Close();
// add results to the list
xmlItems.Clear();
foreach (XmlItem item in xmlItems)
{
xmlItems.Add(item);
}
};
client.OpenReadAsync(new Uri(xmlUrl, UriKind.Absolute));
}
}
我现在基本上正在尝试学习如何做到这一点,因为我对如何实际做到这一点很感兴趣(我知道有很多方法,但这种方式的 ATM 似乎最简单)我只是不明白 ATM 的错误是什么。( *中的位表示错误所在)
我也知道 ATM 的显示功能不是很好(因为它只会显示最后一项),但现在可以进行测试。
对某些人来说,这似乎很容易,作为一个学习者,这对我来说还不是那么容易。
图片形式的错误:(似乎我无法发布图片:/)
在此先感谢您的帮助
编辑: 下面的答案修复了错误:D 但是仍然没有任何结果。我“认为”这是因为 XML 布局和它拥有的后代数量(无法弄清楚我需要做些什么,成为 XML 的菜鸟并将其作为数据源从网络中拉出来)
也许我开始太复杂了:/
关于如何正确地从提要中提取一些元素(正如后代中的所有元素)并存储它们的任何帮助/提示都会很棒:D
Edit2: 我让它工作(以粗略的方式)但仍然:D
谢谢亚当马拉斯!
最后一个问题是双重上市。(将其添加到列表,然后将其添加到另一个列表会导致空异常)仅在方法中使用 1 列表即可解决此问题,(可能不是最好的方法,但现在可以使用)并允许我将结果添加到列表框中,直到我花一些时间研究如何使用 ListBox.ItemTemplate 和 DataTemplate 使其看起来更有吸引力。(我现在说似乎很容易......)
再次感谢!!!