Windows Phone应用程序需要从xml源文件读入
问题描述:
尝试用XML源文件中的值填充列表的问题。Windows Phone应用程序需要从xml源文件读入
我有一个WebClient读入调用以下函数的项目。
WebClient client = new WebClient();
client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted);
Uri url = new Uri("http://www.usi.edu/webservices/iphone/USIINFOterms.xml", UriKind.Absolute);
client.OpenReadAsync(url);
功能
public void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
try
{
var xml = XDocument.Load(e.Result);
var results = from row in xml.Element("value").Elements() select row;
// now I loop all rows and print the title; of course you canfc
// do other stuff here or combine some data processing with the LINQ above
// - this is up to you
foreach (var result in results)
{
item.ItemLine1 = result.Value;
list.Add(item);
}
}
catch (Exception c)
{
MessageBox.Show(c.Message);
}
}
列表元素返回空引用。
这里的XML文件的样子
<data>
<row>
<value>Fall 2013</value>
<value>201410</value>
</row>
<row>
<value>Third Summer 2013</value>
<value>201350</value>
</row>
不具有xml文件太多的运气。任何帮助表示赞赏。
答
一对夫妇的想法:
更换
XDocument.Load(e.Result)
与XDocument.Parse(e.Result)
。 XDocument.Load()对待是作为URI的参数,并且您 - 我假设 - 已经下载了XML文档。 XDocument.Parse()会为您打开该文档。-
尝试以下操作:
var results = from row in xml.Root.Elements("row") select row.Element("value");
XElement.Elements()仅从当前XML元素的作品 - 它不扫描整个XML文档树。要扫描整个树,您可以使用XElement.Descendants()。或者,为了更准确地选择您需要的元素,请使用上述模式 - 从第一级挑选元素,然后深入到下一级。
这工作和摆脱空引用错误;然而,通过结果的循环似乎不会触发。 – user2341163 2013-05-02 02:10:23
考虑在调试器中查看部分Linq表达式返回的内容,例如xml.Root.Elements(“row”)返回什么?另请注意,我用xml.Root.Elements()代替了代码中的xml.Elements()。 – 2013-05-02 02:19:56
当打印出xml.Root.Elements(“row”)时,我得到: 线程''(0xe3a004e)已退出,代码为0(0x0)。 线程''(0xea1005a)已退出代码0(0x0)。 –
user2341163
2013-05-02 02:24:40