我必须解析这个文档,我打算使用NSXMLparser,但唯一的问题是我不知道如何获取我想要的信息。我不知道如何浏览每个标签,我看到了简单的例子,但是当我尝试使用他们的方法时,我得到了我不想要的随机标签和信息。有人可以解释如何从复杂的XML结构中获取某些信息吗? 谢谢!
<kml xmlns:ns3="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0" xmlns:ns2="http://www.w3.org/2005/Atom"
xmlns="http://www.opengis.net/kml/2.2">
<Document>
<description>Available CAR2GO Vehicles</description>
<Style id="car2go">
<IconStyle>
<Icon>
<href>http://www.car2go.com/common/images/openapi/marker_car2go.png
</href>
</Icon>
<hotSpot y="0.0" x="0.0" />
</IconStyle>
</Style>
<Style id="car2go_ed">
<IconStyle>
<Icon>
<href>http://www.car2go.com/common/images/openapi/marker_car2go_ed.png
</href>
</Icon>
<hotSpot y="0.0" x="0.0" />
</IconStyle>
</Style>
<Placemark>
<name>UL-C5887</name>
<description>Sudetenweg, 89075 Ulm<br/>Fuel
24<br/>Interior GOOD<br/>Exterior GOOD
</description>
<styleUrl>#car2go_ed</styleUrl>
<ExtendedData>
<Data name="fuel">
<value>24</value>
</Data>
<Data name="interior">
<value>GOOD</value>
</Data>
<Data name="exterior">
<value>GOOD</value>
</Data>
<Data name="vin">
<value>WME4513001K154655</value>
</Data>
<Data name="engineType">
<value>ED</value>
</Data>
<Data name="charging">
<value>true</value>
</Data>
</ExtendedData>
<Point>
<coordinates>10.029,48.4362,0</coordinates>
</Point>
</Placemark>
<Placemark>
<name>UL-C5889</name>
<description>Heilmeyersteige, 89075 Ulm<br/>Fuel
58<br/>Interior GOOD<br/>Exterior GOOD
</description>
<styleUrl>#car2go</styleUrl>
<ExtendedData>
<Data name="fuel">
<value>58</value>
</Data>
<Data name="interior">
<value>GOOD</value>
</Data>
<Data name="exterior">
<value>GOOD</value>
</Data>
<Data name="vin">
<value>WME4513001K154655</value>
</Data>
<Data name="engineType">
<value>CE</value>
</Data>
</ExtendedData>
<Point>
<coordinates>9.947235,48.410497,0</coordinates>
</Point>
</Placemark>
</Document>
答案 0 :(得分:0)
我建议您查看Apple自己的示例代码所展示的策略:
实际的解析代码在这里:
所有工作都由解析器的委托(即此对象self
)完成。请特别注意didStartElement:...
如何根据刚刚遇到的元素类型做出选择。
我还应该提一下,还有另一种策略,即代理人做出这些选择,而不是在不同的委托中重新分配解析器。在这里,我开发了该策略的一般版本,并展示了如何使其适应特定的解析情况:http://www.apeth.com/iOSBook/ch36.html#_xml
答案 1 :(得分:0)
我得到随机标签和我不想要的信息
使用NSXMLParser
,您无需浏览XML。相反,您为解析器创建一个委托,每次解析器遇到某些东西时都会收到消息 - 标记,值等。您的委托需要监视它感兴趣的标记和值,并对您的应用做任何有意义的事情当那些人到达时因此,您看到的标签不是随机的,它们只是您按照它们在文件中出现的顺序解析的文件中的标签。
有人可以解释如何从复杂的XML结构中获取某些信息吗?
通常,你的解析器委托有点像状态机,它跟踪它正在解析的标签,它看到的数据等等。这可能比你想要的更多,在这种情况下你可能想要查看除NSXMLParser
之外的其他XML解析选项。 TouchXML是一个受欢迎的库,因为它为您解析文件,然后让您使用Xquery查看数据。
答案 2 :(得分:0)
我强烈建议你不要重新发明轮子并使用高级别的第三方图书馆,这将使你的生活更轻松。 AFMetworking成名的@mattt拥有一个出色的XML解析库,名为Ono。