【问题标题】:Parsing XML in a foreach loop在 foreach 循环中解析 XML
【发布时间】:2014-06-18 23:19:36
【问题描述】:

我正在 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
    }
}

现在,当使用断点时,它会到达 for each 循环,但根本不会运行,只是继续前进。我猜我的 for each 循环设置错误。

非常感谢。

【问题讨论】:

  • 可能尝试将您的 foreach 更改为:foreach (XElement element in xdox.Descendants("ThemeParkList"))

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


【解决方案1】:

您的 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"))

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    • 2017-04-09
    • 2020-01-23
    • 2012-02-21
    • 1970-01-01
    相关资源
    最近更新 更多