2013-02-10 78 views
0

我有這個結構的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); 

} 

我應該使用其他代表嗎?我在這裏做錯了什麼?

回答

1

<name>不是<Placemark>的屬性,它是一個子元素。您需要設置一個標誌或一些此類方法,然後等待解析器通過parser:didStartElement:...再次調用委託,並將「name」作爲elementName。當您在「地標」上獲得parser:didEndElement:...以準備下一次迭代時,您可以再次關閉該標誌。

+0

以及我如何獲得名稱的價值? – BlackM 2013-02-10 22:43:43

+0

'parser:foundCharacters:'將被調用至少一次,也許是幾次。你累積字符,直到你擊中當前元素的末尾,在這種情況下,'name'。您可能會發現使用第三方庫更容易,如[TBXML](http://www.tbxml.co.uk/TBXML/TBXML_Free.html),這是專爲這種解析而設計的。 – rsswtmr 2013-02-10 22:46:07

+0

所以我會使用一個全局變量作爲標誌並讀取所有字符,當elementName = name? – BlackM 2013-02-10 22:47:57