2010-09-26 47 views
3

我試圖(通過道路的方式),以獲得兩兩地之間的距離,我得到一個HTTP請求將返回一個XML數據如下如何從谷歌方向api解析iphone的距離數據?

http://code.google.com/apis/maps/documentation/directions/#XML

,但我不明白如何使用NSXMLParser獲取總距離。我會假設使用

parser:didStartElement:namespaceURI:qualifiedName:attributes 

方法,但不知道這是如何工作的。我想我想要的元素是「方向」,但有一些像這樣的元素。我如何指定我想要的?它是否與「屬性」參數有關?

+1

我們不應該把感謝結束?變得有點挑剔... – Marty 2010-09-26 05:13:38

+0

是的,我們不允許以「你好」開始。 – 2010-09-26 23:18:28

+0

傻......一定是個原因。 – Marty 2010-09-27 07:39:31

回答

0

NSXMLParser是一個SAX解析器,這意味着您必須在處理文檔時爲各種解析事件提供回調方法。您鏈接到的Google文檔使我認爲這些文檔不是非常大,所以我個人不會使用SAX解析器。

一個DOM解析器,比如NSXMLDocument使用起來要容易得多,但不幸的是Apple在iOS SDK中並沒有包含NSXMLDocument。有幾種選擇,包括TouchXML

如果您只關心總距離,而不是每條腿或步驟的距離,那麼簡單的XPath查詢將獲得所有距離://leg/step/distance/value。循環瀏覽並總結出來。

+0

作爲推論:考慮使用JSON API,因爲JSON比XML更快解析。 – 2010-10-11 14:36:25

0

您使用didStartElement來查找您需要的元素,而不是您應該使用foundCharacters方法來收集標記內容(它可以被稱爲多於一個),所以只有當調用didEndElement方法時,您才能使用標記的內容想。

+0

是的,我明白了,但正如我所說,有幾個元素具有相同的標籤,但在文件的不同層次。我想我會嘗試使用columnNumber方法嗎? – Marty 2010-09-27 18:33:13

+0

作爲票價,據我所知,你想通過XML文件並收集所有標籤的信息? – eviltrue 2010-09-27 18:41:02