wp7帮助解析Xml

时间:2013-11-04 03:46:16

标签: c# xml windows-phone-7 linq-to-xml

您好我正在尝试从icalander开发的奇怪的xml文档中解析一些xml。解析数据时我遇到了很多麻烦,但是感谢stackoverflow的帮助,我已经能够解析数据了。现在我需要在节点之间解析一些帮助。这是我从(http://datastore.unm.edu/events/events.xml

解析的xml文件的链接

我正在使用Visual Studio 2010中的pivotapp模型来创建此应用。在MainViewModel.cs部分,我正在修改以下代码,希望标签将打印出来代替“LineOne”(下面列出的代码)。例如,从上面链接的xml文件中,我想要LineOne = Lobo的Got Talent。

我需要帮助找出实现这一目标的最佳方法,我需要LineTwo来包含日期和时间,LineThree需要包含描述。

感谢您的时间和帮助,非常感谢!

    public void LoadData()
    {
        var webClient = new WebClient();
        webClient.OpenReadAsync(new Uri("http://datastore.unm.edu/events/events.xml"));
        webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(webClient_OpenReadCompleted);
    }

    public void webClient_OpenReadCompleted(object sender, 
                                            OpenReadCompletedEventArgs e)
    {
        XDocument unmXdoc = XDocument.Load(e.Result, LoadOptions.None);
        this.Items.Add(new ItemViewModel() { LineOne = unmXdoc.ToString(), 
                                             LineTwo = "", LineThree = "" });
    }

感谢您寻求帮助!

1 个答案:

答案 0 :(得分:0)

xml很好,我认为你在这里遇到命名空间问题,你有两个选项,如果你确定你不需要它,请删除xml文件的命名空间。首选项是使用命名空间并为完全限定的元素名称指定它。 see Here

 private readonly XNamespace dataNamspace = "urn:ietf:params:xml:ns:icalendar-2.0";

    public void webClient_OpenReadCompleted(object sender,
                                            OpenReadCompletedEventArgs e)
    {
        XDocument unmXdoc = XDocument.Load(e.Result, LoadOptions.None);

        this.Items = from p in unmXdoc.Descendants(dataNamspace + "vevent").Elements(dataNamspace + "properties")
                     select new ItemViewModel
            {
                LineOne = this.GetElementValue(p, "summary"),
                LineTwo = this.GetElementValue(p, "description"),
                LineThree = this.GetElementValue(p, "categories"),
            };

        lstData.ItemsSource = this.Items;
    }

    private string GetElementValue(XElement element, string fieldName)
    {
        var childElement = element.Element(dataNamspace + fieldName);

        return childElement != null ? childElement.Value : String.Empty;
    }