Замена WebClient с автономным XDocument - PullRequest
1 голос
/ 04 января 2011

Я создал целое приложение для Windows Phone 7 (которым я очень горжусь!), Но я только что понял, что нет реальной цели размещения файлов XML в моем приложении на моем веб-сайте. Поскольку их никогда не нужно обновлять, я решил, что гораздо разумнее просто включить их как часть проекта. Однако большинство моих опытов и уроков, которые я изучил, показали, как анализировать данные XML в списках после их загрузки через WebClient. Итак, есть ли простой способ заменить WebClient автономным загрузчиком XML?

Это, по сути, количество страниц в моем приложении, очевидно, я поменял некоторые имена, относящиеся к цели моего приложения, на глупости о людях / именах / возрастах для простоты.

namespace WindowsPhoneApplication14.Pages.Other
{
public partial class People : PhoneApplicationPage
{
    public People()
    {           
        InitializeComponent();

        Dispatcher.BeginInvoke((Action)(() => pplListBox.ItemsSource = ppldata));

        WebClient pplWebClient = new WebClient();

        pplWebClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(ppl_DownloadStringCompleted);
        pplWebClient.DownloadStringAsync(new Uri("http://www.mywebsite.com/ppl.xml"));
    }

    void ppl_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
    {
        if (e.Error != null)
            return;

        XElement xmlitem = XElement.Parse(e.Result);

        var ppldata = new List<PeopleClass>();

        foreach (XElement item in xmlitem.Elements("entry"))
        {
            var name = item.Element("name");
            var namevalue = (name == null) ? null : name.Value;
            var age = item.Element("age");
            var agevalue = (age == null) ? null : age.Value;

            ppldata.Add
                (new PeopleClass
                    {
                        Name = namevalue,
                        Age = agevalue,
                    }
                );
        }

        pplListBox.ItemsSource = ppldata;            

    }

    public class PeopleClass
    {
        public string Name { get; set; }
        public string Age { get; set; }
    }

    public System.Collections.IEnumerable ppldata { get; set; }

}

}

Так, для чего я могу поменять операцию WebClient?

1 Ответ

1 голос
/ 04 января 2011

Вы заметите, что XDocument.Load имеет два основных набора переопределений.Один принимает поток (как вы использовали в XElement.Parse (e.Result), другой - путь к файлу XML в вашем XAP.

Вы можете использовать последний, если ваши документы статичны иможет быть опубликован с вашим XAP.

Этот пример, который я опубликовал, работает таким образом.

, связывающий источник данных Linq со списком

...