NSXML解析为iOS
问题描述:
我有这个结构的XML(KML):NSXML解析为iOS
<Document>
<Folder>
<Folder>
<name>A -</name>
<Placemark>
<name>Afghanistan</name>
<description></description>
<Style>
<PolyStyle>
<color>aaffffff</color>
<colorMode>random</colorMode>
</PolyStyle>
</Style>
<Polygon>
<outerBoundaryIs>
<LinearRing>
<coordinates> 65.62729644775391,37.33319854736328,0 65.64692687988283,37.45888137817383,0</coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
</Placemark>
<Placemark>
<name>Albania</name>
我试图让每一个国家和它们的坐标的名称,并将它们保存在数组。 这个给了我elementValue的“地标”和urlValue的“null”。
if ([elementName isEqualToString:@"Placemark"]){
NSString *urlValue=[attributeDict valueForKey:@"name"];
NSLog(@"I just found a start tag for %@ %@",elementName,urlValue);
}
我应该使用其他代表吗?我在这里做错了什么?
答
<name>
不是<Placemark>
的属性,它是一个子元素。您需要设置一个标志或一些此类方法,然后等待解析器通过parser:didStartElement:...
再次调用委托,并将“name”作为elementName。当您在“地标”上获得parser:didEndElement:...
以准备下一次迭代时,您可以再次关闭该标志。
以及我如何获得名称的价值? – BlackM 2013-02-10 22:43:43
'parser:foundCharacters:'将被调用至少一次,也许是几次。你累积字符,直到你击中当前元素的末尾,在这种情况下,'name'。您可能会发现使用第三方库更容易,如[TBXML](http://www.tbxml.co.uk/TBXML/TBXML_Free.html),这是专为这种解析而设计的。 – rsswtmr 2013-02-10 22:46:07
所以我会使用一个全局变量作为标志并读取所有字符,当elementName = name? – BlackM 2013-02-10 22:47:57