如何在objective-C中为我的XML解析设置过滤器?
这是我的XML文件:
<shelters>
<point id="1" lat="56.854643730" lon="9.476729748" sted="Jenle Plantage" postnr="0000" type="shelter" shelters="-" fire="Ja" wc="Nej" vand="Nej" pay="-" pafstand="-" note="Jenle Plantage" adr="Jenle Plantage" pic="nopic.png" />
<point id="2" lat="55.253090091" lon="14.745165263" sted="Lejrplads Finnedalen" postnr="0000" type="shelter" shelters="-" fire="Ja" wc="Nej" vand="Nej" pay="-" pafstand="-" note="Lejrplads Finnedalen" adr="Lejrplads Finnedalen" pic="nopic.png" />
<point id="3" lat="56.117966990" lon="9.463753344" sted="Løgager" postnr="0000" type="shelter" shelters="-" fire="Ja" wc="Nej" vand="Nej" pay="-" pafstand="-" note="Løgager" adr="Løgager" pic="nopic.png" />
<point id="4" lat="55.028931084" lon="9.388940781" sted="Aabenraaskovene, Sønderskoven, Von Bergens Plads" postnr="0000" type="shelter" shelters="-" fire="Ja" wc="Nej" vand="Nej" pay="-" pafstand="-" note="Aabenraaskovene, Sønderskoven, Von Bergens Plads" adr="Aabenraaskovene, Sønderskoven, Von Bergens Plads" pic="nopic.png" />
<point id="5" lat="56.126911668" lon="9.625711711" sted="Østre Gåsekær" postnr="0000" type="shelter" shelters="-" fire="Ja" wc="Nej" vand="Nej" pay="-" pafstand="-" note="Østre Gåsekær" adr="Østre Gåsekær" pic="nopic.png" />
</shelters>
这是我的解析部分:
NSURL *baseURL = [NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@"shelters" ofType:@"xml"]];
NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:baseURL];
[parser setDelegate:self.parserobj];
BOOL success = [parser parse];
if(success)
NSLog(@"No Errors");
else
NSLog(@"Error Error Error!!!");
[self.mapView addAnnotations:self.parserobj->annotations];
self.isCurrentCoordinatesSet = false;
[self.mapView setDelegate:self];
我只想获得
的项目fire="Ja"
答案 0 :(得分:1)
您必须基本实现NSXMLParserDelegate的parser:didStartElement:namespaceURI:qualifiedName:attributes:
方法,在此委托方法中,您将属性字典复制到NSMutableArray,如下所示:
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
if([[attributes valueForKey:@"fire"] isEquals:@"Ja"])
[filteredElements addObject:attributes];
}
filteredElements必须声明为私有变量/属性,并在调用[parser parse]之前进行初始化。