我想为以下 XML 中的每个电台创建一个充满 NSDictionary 对象的 NSDictionary 或 (NSArray):
<stations lastUpdate="1328986911319" version="2.0">
<station>
<id>1</id>
<name>River Street , Clerkenwell</name>
<terminalName>001023</terminalName>
<lat>51.52916347</lat>
<long>-0.109970527</long>
<installed>true</installed>
<locked>false</locked>
<installDate>1278947280000</installDate>
<removalDate/>
<temporary>false</temporary>
<nbBikes>12</nbBikes>
<nbEmptyDocks>7</nbEmptyDocks>
<nbDocks>19</nbDocks>
</station>
... more...
<station>
<id>260</id>
<name>Broadwick Street, Soho</name>
<terminalName>003489</terminalName>
<lat>51.5136846</lat>
<long>-0.135580879</long>
<installed>true</installed>
<locked>false</locked>
<installDate>1279711020000</installDate>
<removalDate/>
<temporary>false</temporary>
<nbBikes>12</nbBikes>
<nbEmptyDocks>4</nbEmptyDocks>
<nbDocks>18</nbDocks>
</station>
...
</stations>
实现这一目标的最佳方法是什么?现在我有一个 NSDictionary,其中有一个对象和一个键 - “stations”,但我想要 NSDictionarys 的 NSDictionary(或 NSArray)。
我正在使用 Troy Brant 的 XML 解析器 - http://troybrant.net/blog/2010/09/simple-xml-to-nsdictionary-converter/
我猜这会涉及某种循环,但我不太确定如何解决这个问题。任何正确方向的帮助或指示将不胜感激。
谢谢。
最佳答案
我也使用XMLReader,它很容易理解
我查看了您的 xml,我假设您想使用站标签数组。
这是我的解决方案:
NSDictionary *dictXML= [XMLReader dictionaryForXMLString:testXMLString error:&parseError];
NSArray *arrStation = [[dictXML objectForKey:@"stations"] objectForKey:@"station"];//this would return the array of station dictionaries
现在您已经有了电台标签数组,您可以执行您想要的操作,例如显示所有 id:
for(int i=0;i<[arrStation count];i++){
NSDictionary *aStation = [arrStation objectAtIndex:i];
NSLog(@"id = %@",[aStation objectForKey:@"id"]);
}
您还可以使用快速枚举循环编写更少的代码:
for(NSDictionary *aStation in arrStation){
NSLog(@"id = %@",[aStation objectForKey:@"id"]);
}
希望有帮助:)
关于iphone - 解析 XML 内部 XML 标签 Objective-C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9250788/