在foreach循环中解析XML

时间:2014-05-02 09:54:57

标签: c# xml windows-phone-8 xml-parsing linq-to-xml

我正在Windows Phone 8上创建一个应用程序。我正在努力解决的问题是解析XML。  这里是XML文件:

 <ArrayOfThemeParkList xmlns="http://schemas.datacontract.org/2004/07/WCFServiceWebRole1" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
    <ThemeParkList>
       <id>1</id>
       <name>Alton Towers</name>
    </ThemeParkList>
    <ThemeParkList>
       <id>2</id>
       <name>Thorpe Park</name>
    </ThemeParkList>
    <ThemeParkList>
       <id>3</id>
       <name>Chessington World Of Adventures</name>
    </ThemeParkList>
    <ThemeParkList>
       <id>4</id>
       <name>Blackpool Pleasure beach</name>
    </ThemeParkList>
 </ArrayOfThemeParkList>

尝试解析它的c#代码是:

void ThemeParksNames_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
    //Now need to get that data and display it on the page
    //check for errors
    if (e.Error == null)
    {
        //No errors have been passed now need to take this file and parse it 
        //Its in XML format
        XDocument xdox = XDocument.Parse(e.Result);
        //need a list for them to be put in to
        List<ThemeParksClass> ParkList = new List<ThemeParksClass>();
        //Now need to get every element and add it to the list
        foreach (XElement item in xdox.Root.Elements("ThemeParkList"))
        {
            ThemeParksClass content = new ThemeParksClass();
            content.ID = Convert.ToInt32(item.Element("id").Value);
            content.ThemeParkName = item.Element("name").Value.ToString();
            ParkList.Add(content);
        }
        parkList.ItemsSource = ParkList.ToList();
    }
    else
    {
        //There an Error
    }
}

现在当使用Break points时,它会转到for循环,但是根本不会继续运行。我猜我有每个循环设置错误。

非常感谢。

1 个答案:

答案 0 :(得分:4)

您的ThemeParkList元素位于命名空间http://schemas.datacontract.org/2004/07/WCFServiceWebRole1中 - 您需要相应地进行调整:

XNamespace ns = "http://schemas.datacontract.org/2004/07/WCFServiceWebRole1";
foreach (XElement item in xdox.Descendants(ns + "ThemeParkList"))

您需要以相同的方式处理其他元素。