在iOS:Tag中解析XML
我有一个XML文件。 这是其中的一部分在iOS:Tag中解析XML,ios,objective-c,xml,parsing,Ios,Objective C,Xml,Parsing,我有一个XML文件。 这是其中的一部分 <Placemark> <kml:name xmlns:kml="http://www.opengis.net/kml/2.2">Placename</kml:name> <kml:description xmlns:kml="http://www.opengis.net/kml/2.2"> </kml:description> <kml:Point xmln
<Placemark>
<kml:name xmlns:kml="http://www.opengis.net/kml/2.2">Placename</kml:name>
<kml:description xmlns:kml="http://www.opengis.net/kml/2.2">
</kml:description>
<kml:Point xmlns:kml="http://www.opengis.net/kml/2.2">
<kml:coordinates>121.142122637505,22.9071362429957,0</kml:coordinates>
</kml:Point>
<styleUrl>#ylwPng</styleUrl>
</Placemark>
但是我的代码不起作用。我的代码只能成功解析以下XML
<Placemark>
<name>Placename/name>
<description></description>
<styleUrl>#ylwPng</styleUrl>
<Point>
<coordinates>121.142122637505,22.90713624299571,0</coordinates>
</Point>
</Placemark>
地名/名称>
#ylwPng
121.142122637505,22.90713624299571,0
我正试图修改它以适应我的XML,但我不知道如何做。您应该添加一个实例变量来记住元素名称或字符串对象。 例如,您可以添加
NSString*\u currentElement
存储元素名称,然后在NSXMLParserDelegate
中使用它,如下所示:
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
_currentElement = elementName;
if ([elementName isEqualToString:@"kml:name"]) {
NSLog(@"url:%@",attributeDict[@"xmlns:kml"]);
}
else if ([elementName isEqualToString:@"kml:description"])
{
NSLog(@"url:%@",attributeDict[@"xmlns:kml"]);
}
else if ([elementName isEqualToString:@"kml:Point"])
{
NSLog(@"url:%@",attributeDict[@"xmlns:kml"]);
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
if ([_currentElement isEqualToString:@"kml:coordinates"]) {
NSLog(@"Coordinates:%@",string);
}
else if ([_currentElement isEqualToString:@"styleUrl"])
{
NSLog(@"Style:%@",string);
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
}
上面的代码片段应该适合您
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
_currentElement = elementName;
if ([elementName isEqualToString:@"kml:name"]) {
NSLog(@"url:%@",attributeDict[@"xmlns:kml"]);
}
else if ([elementName isEqualToString:@"kml:description"])
{
NSLog(@"url:%@",attributeDict[@"xmlns:kml"]);
}
else if ([elementName isEqualToString:@"kml:Point"])
{
NSLog(@"url:%@",attributeDict[@"xmlns:kml"]);
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
if ([_currentElement isEqualToString:@"kml:coordinates"]) {
NSLog(@"Coordinates:%@",string);
}
else if ([_currentElement isEqualToString:@"styleUrl"])
{
NSLog(@"Style:%@",string);
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
}