在Objective-C中设置XML解析的过滤器

时间:2013-04-27 11:16:25

标签: objective-c

如何在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"

1 个答案:

答案 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]之前进行初始化。