NSXMLParsing для определенного значения тега - PullRequest
1 голос
/ 15 марта 2011

У меня есть XML-файл, который выглядит так:

 <country>
            <routes>
                <SourceCountry>Ireland</SourceCountry>
                <SourcePort>Larne</SourcePort>
                <DestinationCountry>UK</DestinationCountry>
                <DestinationPort>Troon </DestinationPort>
                        </routes>
            <routes>
                <SourceCountry>Ireland</SourceCountry>
                <SourcePort>Larne</SourcePort>
                <DestinationCountry>UK</DestinationCountry>
                <DestinationPort>Cairnryan </DestinationPort>
                        </routes>
            <routes>
                <SourceCountry>Ireland</SourceCountry>
                <SourcePort>Belfast</SourcePort>
                <DestinationCountry>UK</DestinationCountry>
                <DestinationPort>Birkenhead </DestinationPort>
                        </routes>
            <routes>
                <SourceCountry>Ireland</SourceCountry>
                <SourcePort>Belfast</SourcePort>
                <DestinationCountry>Belgium</DestinationCountry>
                <DestinationPort>Heysham </DestinationPort>
                        </routes>
            <routes>
                <SourceCountry>Belgium</SourceCountry>
                <SourcePort>Warrenpoint</SourcePort>
                <DestinationCountry>UK</DestinationCountry>
                <DestinationPort>Heysham </DestinationPort>
                        </routes>

Я хочу разобрать определенные данные для <SourceCountry> == Ireland and <DestinationCountry> == UK. Как я могу это сделать?

Ответы [ 4 ]

2 голосов
/ 15 марта 2011

Использование NSXMLParser

  1. реализовать делегата для этого класса ... <NSXMLParserDelegate>

  2. реализовать методы для этого синтаксического анализатора ...

    ВАМ понадобятся следующие методы.

    - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict

    - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string

Вы можете прочитать этот урок ; это просто в использовании.

1 голос
/ 15 марта 2011

Попробуй это. , .

int element=0;
[self parseXMLFileAtURL:filepath];

следующие методы являются делегатами NSXMLParser

- (void)parseXMLFileAtURL:(NSString *)URL
{   
    NSURL *xmlURL = [NSURL fileURLWithPath:URL];
    parser = [[ NSClassFromString(@"NSXMLParser") alloc] initWithContentsOfURL:xmlURL];
    [parser setDelegate:self];
    [parser setShouldProcessNamespaces:NO];
    [parser setShouldReportNamespacePrefixes:NO];
    [parser setShouldResolveExternalEntities:NO];
    [parser parse];

}
- (void)parserDidStartDocument:(NSXMLParser *)parser
{   
    NSLog(@"found file and started parsing");
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{           
    if(([elementName compare:@"SourceCountry"])==NSOrderedSame)
        element=1;
    if(([elementName compare:@"SourcePort"])==NSOrderedSame)
        element=2;
    if(([elementName compare:@"DestinationCountry"])==NSOrderedSame)
        element=3;
    if(([elementName compare:@"DestinationPort"])==NSOrderedSame)
        element=4;


}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{   


}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    if (element==1)
    {
        [TotalXMLArray addObject:string];       
        element=0;
    }
    if (element==2)
    {
        [TotalXMLArray addObject:string];       
        element=0;
    }
    if (element==3)
    {
        [TotalXMLArray addObject:string];       
        element=0;
    }
    if (element==4)
    {
        [TotalXMLArray addObject:string];       
        element=0;
    }

}

1 голос
/ 15 марта 2011

Вам нужно использовать синтаксический анализатор XML, используйте NSXMLParser для анализа ваших данных. Ниже приведен пример кода Apple для ImageMap, в котором они использовали NSXMLParser для анализа содержимого XML.

http://developer.apple.com/library/mac/#samplecode/ImageMap/Introduction/Intro.html#//apple_ref/doc/uid/DTS40009015

1 голос
/ 15 марта 2011
...