Как проанализировать данные о расстоянии с iphone из API Google Maps? - PullRequest
3 голосов
/ 26 сентября 2010

Я пытаюсь получить расстояние между двумя местами (по дорогам) и получаю, что запрос http вернет XML со следующими данными

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

но я не понимаю, как использовать NSXMLParser, чтобы получить общее расстояние.Я бы предположил использовать метод

parser:didStartElement:namespaceURI:qualifiedName:attributes

, но не уверен, как это работает.Элемент, который я хотел бы получить, я думаю, это «направления», но есть пара таких элементов.Как мне указать, какой я хочу?Это связано с параметром "attribute"?

Ответы [ 2 ]

0 голосов
/ 27 сентября 2010

NSXMLParser - это синтаксический анализатор SAX, и это означает, что вы должны предоставить методы обратного вызова для различных событий анализа во время обработки документа.Документация Google, на которую вы ссылаетесь, заставляет меня думать, что эти документы не очень большие, и поэтому я бы лично не использовал парсер SAX.

Парсер DOM, такой как NSXMLDocument, гораздо проще в использовании, но, к сожалению,Apple не включила NSXMLDocument в iOS SDK.Существует несколько альтернатив, в том числе TouchXML .

. Если вас заботит только общее расстояние, а не расстояние для каждой ноги или шага, тогда простой запрос XPath получит все расстояния.для вас: //leg/step/distance/value.Переберите их и суммируйте.

0 голосов
/ 27 сентября 2010

Вы используете didStartElement для поиска необходимого элемента, чем метод FoundCharacters для сбора содержимого тега (его можно вызывать более чем одного), поэтому только при вызове метода didEndElement вы можете использовать содержимое тега для чего угодно .

...