0

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

1 回答 1

1

您必须基本上实现parser:didStartElement:namespaceURI:qualifiedName:attributes:NSXMLParserDelegate 的方法,在此委托方法中,您将属性字典复制到 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]; 
}

在调用 [parser parse] 之​​前,filteredElements 必须声明为私有变量/属性并初始化。

于 2013-04-27T11:28:52.117 回答