如何从谷歌方向API中使用iPhone解析距离数据?

3
我正在尝试获取两个地点之间的距离(通过道路),我知道一个HTTP请求会返回一个包含以下数据的XML文档:http://code.google.com/apis/maps/documentation/directions/#XML,但我不知道如何使用NSXMLParser来获取总距离。我猜应该使用
parser:didStartElement:namespaceURI:qualifiedName:attributes

我想使用方法,但不确定它是如何工作的。 我猜想我想要的元素是“directions”,但有几个类似的元素。 我该如何指定我想要的元素?这与“attributes”参数有关吗?


1
我们不应该在结尾处加上感谢吗?变得有点挑剔了... - Marty
是的,我们也不允许以“你好”开始。 - Tom Irving
2个回答

0

你可以使用didStartElement方法找到需要的元素,然后使用foundCharacters方法收集标签的内容(它可能会被多次调用),只有在调用didEndElement方法时,你才能使用标签的内容进行任何操作。


是的,我明白了,但正如我所说,有几个元素具有相同的标签,但位于文件的不同层。我想我要尝试使用columnNumber方法,也许可以解决问题? - Marty
据我所理解,您想通过xml文件并收集所有<distance>标签中的信息? - eviltrue

0

NSXMLParser 是一种 SAX 解析器,这意味着在处理文档时必须为各种解析事件提供回调方法。您链接的 Google 文档让我认为这些文档并不是非常大,因此我个人不会使用 SAX 解析器。

DOM 解析器(例如 NSXMLDocument)更容易使用,但不幸的是,苹果没有将 NSXMLDocument 包含在 iOS SDK 中。有几个替代方案,包括 TouchXML

如果您只关心总距离而不是每个路段或步骤的距离,则简单的 XPath 查询将为您获取所有距离://leg/step/distance/value。循环遍历它们并将它们相加即可。


作为一个必然的结果:考虑使用JSON API,因为JSON比XML更快解析。 - Chris Broadfoot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接