如何使用WebClient将XML数据加载到Silverlight应用程序中?

时间:2011-08-04 19:42:08

标签: c# xml silverlight

我的xml文件中有几个项目,但只有一个和第一个加载。我不确定发生了什么。但是当我输出e.Result字符串时,所有项目都显示出来。不知何故,这些项目不会通过xml文件进行解析。

<?xml version="1.0" encoding="utf-8" ?>
<Images>
    <Image>hello.jpg</Image>
    <Image>goodbye.jpg</Image>
    <Image>flower.jpg</Image>
    <Image>bird.jpg</Image>
</Images>

代码:

WebClient wc = new WebClient();
wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted);
wc.DownloadStringAsync(new Uri("Data.xml", UriKind.RelativeOrAbsolute));

void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
    string result = e.Result;
    byte[] byteArray = Encoding.UTF8.GetBytes(result); 
    MemoryStream stream = new MemoryStream(byteArray);

    int index = 0; 
    foreach (XElement element in xdoc.Descendants("Images").ToList())
    {
        index += 1; 
    }
    Label l = new Label();
    l.Content = index.ToString(); 
    listBox1.Items.Add(l); 
}

    // outputs 1 - WTF? 

1 个答案:

答案 0 :(得分:3)

XML文档中只有1个“Images”元素,因此xdoc.Descendants("Images")只返回1个元素。如果您需要单独的<Image>元素,则应使用xdoc.Descendants("Image")xdoc.Descendants("Images").Elements()