在 foreach 循环中解析 XML
Posted
技术标签:
【中文标题】在 foreach 循环中解析 XML【英文标题】:Parsing XML in a foreach loop 【发布时间】: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"))
【参考方案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"))
您需要以相同的方式处理其他元素。
【讨论】:
以上是关于在 foreach 循环中解析 XML的主要内容,如果未能解决你的问题,请参考以下文章
c# foreach 没有在循环中获取下一个 XElement 名称