从XML文件填充表格视图单元

问题描述:

我有一个数组(相当大),现在我想从它的特定项目(特定键)填充我的表格视图。请看看我的XML文件的一部分:从XML文件填充表格视图单元

</Shops> 
    <Architecture>Архитектурные достопримечательности<place> 
      <name>Старый английский двор</name> 
      <description>Старый английский двор — архитектурно-историческая достопримечательность и музей Москвы (ул. Варварка, д. 4). Памятник гражданской архитектуры XV—XVII веков, резиденция английской торговой Московской компании, а во время посольских миссий — Английский посольский дом.</description> 
      <webpage>http://ru.wikipedia.org/wiki/Английский_двор_(Москва)</webpage> 
      <latitude>55.752297</latitude> 
      <longitude>37.626897</longitude> 
      <imageCell>https://dl.dropbox.com/s/gzbgtll5wzn9dox/StaryiAngliskyiDvor.jpg?dl=0</imageCell> 
      <imageFirst>https://dl.dropbox.com/s/8abn9c6omb1qp3h/StaryiAngliskyiDvor.jpg?dl=0</imageFirst> 
      <imageSecond>https://dl.dropbox.com/s/ihrdgys6nr1zsiz/EnglishCourt2.jpg</imageSecond> 
      <imageThird>https://dl.dropbox.com/s/yt36zjdc1vqgb1k/EnglishCourt3.jpg</imageThird> 
      <imageFourth>https://dl.dropbox.com/s/iu9upggjuafd8y5/EnglishCourt4.jpg</imageFourth> 
     </place> 
     <place> 
      <name>Палаты Романовых</name> 
      <description>Палаты Романовых находятся в Зарядье. Зарядье — так в старину называлась часть центра Москвы, расположенная «за рядами» торговых лавок, примыкающих к Кремлю. Район расположен к Востоку от Кремля, между Варварской улицей, в советские времена носившей имя Разина, и Москвой-рекой. Свое название он получил в XVI веке. И сегодня это место в центре Москвы. Палаты Романовых в Зарядье — это единственная постройка, сохранившаяся от большой усадьбы бояр Романовых.</description> 
      <webpage>http://ru.wikipedia.org/wiki/Палаты_Романовых</webpage> 
      <latitude>55.752717</latitude> 
      <longitude>37.629189</longitude> 
      <imageCell>https://dl.dropbox.com/s/d9ule0w6ps968ih/PalatiRomanovi.jpg?dl=0</imageCell> 
      <imageFirst>https://dl.dropbox.com/s/tmyi71om08fbvhd/PalatiRomanovi.jpg?dl=0</imageFirst> 
      <imageSecond>https://dl.dropbox.com/s/bnjjzqhdes7y1wj/PalatiRomanovih2.jpg</imageSecond> 
      <imageThird>https://dl.dropbox.com/s/i64yhbwsduk1gem/PalatiRomanovih3.jpg</imageThird> 
      <imageFourth>https://dl.dropbox.com/s/thx7en6i157nsng/PalatiRomanovih4.jpg</imageFourth> 
     </place> 

我想要的是,例如,填充表视图只为“建筑”关键的项目。我怎么能这样做?

在现在,我做到这一点很简单:

labelText.text = [[self.listOfPlaceDetails objectAtIndex:indexPath.row] objectForKey:@"name"]; 

我应该以某种方式指定键?或者将我的XML文件分离出来?

任何意见将不胜感激,谢谢!

您必须解析您的XML文件才能创建它的对象表示。 为此,您可以使用NSXMLParser类(tuto by Apple),或使用更快的库(look here for a good start)。

一旦你有你的对象表示,你可以用它来填充你的tableView。

+0

我真的很奇怪为什么没有简单的方法,比如objectForKey:@“key”和forChildNode:@“Node”。 XML文件组织良好,但与它们合作感到痛苦。 – 2014-11-06 22:22:45

第一步应该是,把你的xml改成属性列表(其他选项是解析你的xml我不推荐)。 在新文件 - >资源 - >您找到一个空白属性列表文件模板。

+0

我在这个XML文件中付出了很多努力,我认为它不合理的改变它。以及属性列表如何帮助?它类似于XML。 – 2014-11-06 18:54:14

+0

属性列表是一个XML文件,但带有一些标签,而不是轻易将其转换为NSArray或NSDictionary。在你的xml中,标签是关键,解析它(没有第三部分代码)是很难的。 – 2014-11-06 18:58:52

+0

plist文件加载非常快,但它需要更多时间来解析XML文件。但也许他不能将他的XML更改为plist,因为他从web服务中获取它。 – Imotep 2014-11-06 21:36:45