您好我正在尝试从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 = "" });
}
感谢您寻求帮助!
答案 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;
}