цикл for внутри nsxmlparser? как организовать файл .xml? - PullRequest
1 голос
/ 07 сентября 2011

Допустим, что это мой файл .xmi, который нужно проанализировать;

<?xml version="1.0" encoding="UTF-8"?>
<Albums>
<Album id="1">
<name>Images</name>
<link1>http://galeri.uludagsozluk.com/38/apple_36298.png</link1>
<link2>http://galeri.uludagsozluk.com/38/apple_36298.png</link2>
<link3>http://galeri.uludagsozluk.com/38/apple_36298.png</link3>
<link4>http://galeri.uludagsozluk.com/38/apple_36298.png</link4>
<link5>http://galeri.uludagsozluk.com/38/apple_36298.png</link5>    
</Album>
</Albums>

Как создать цикл для создания изменяемой строки для link1 link2 link3 и так далее.Я не хочу ограничиваться количеством ссылок.Так что цикл обязательно требуется.

Это мой код nsxmlparser;

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

    currentElement = [elementName copy];

    if ([elementName isEqualToString:@"Album"]) {
        album = [[NSMutableDictionary alloc] init];
        self.currentName = [[NSMutableString alloc] init];
        self.currentURL = [[NSMutableString alloc] init];
    }
     }

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

    if ([elementName isEqualToString:@"Album"]) {
        [album setObject:self.currentName forKey:@"name"];
        [album setObject:self.currentURL forKey:@"link1"];

        [albums addObject:[album copy]];
    } 
     }

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString
*)string{
    if ([currentElement isEqualToString:@"name"]) {
        [self.currentName appendString:string];
    } else if ([currentElement isEqualToString:@"link1"]) {
        [self.currentURL appendString:string];
    }  }

С этим парсером я могу анализировать только link1.Но я должен создать цикл для "link% @", и анализатор должен автоматически анализировать все мои ссылки по мере добавления.

Или вы, ребята, предлагаете лучший способ разбора нескольких ссылок по определенному элементу?Лучший способ организовать файл .xml?Я открыт для новых идей.вроде:

<?xml version="1.0" encoding="UTF-8"?>
<Albums>
<Album id="1">
<name>Images</name>
<link id="1">http://galeri.uludagsozluk.com/38/apple_36298.png</link>
<link id="2">http://galeri.uludagsozluk.com/38/apple_36298.png</link>
<link id="3">http://galeri.uludagsozluk.com/38/apple_36298.png</link>
<link id="4">http://galeri.uludagsozluk.com/38/apple_36298.png</link>
<link id="5">http://galeri.uludagsozluk.com/38/apple_36298.png</link>    
</Album>
</Albums>

Или выше xml возможно?

Спасибо заранее.

Ответы [ 2 ]

0 голосов
/ 14 сентября 2011

Лучшее решение, которое я нашел, - метод с разделением по компонентам.Если добавить все ссылки только в один элемент, анализатор проанализирует его как nsstring, и вы сможете создать nsarray из nsstring.И очень легко, мы можем использовать этот массив где угодно.

0 голосов
/ 07 сентября 2011

Вам нужно либо создать цикл for, который выполняется только 5 раз.

или

содержит элементы link-N в элементе <links />.

<?xml version="1.0" encoding="UTF-8"?>
<Albums>
<Album id="1">
<name>Images</name>
<links>
    <link>http://galeri.uludagsozluk.com/38/apple_36298.png</link>
    <link>http://galeri.uludagsozluk.com/38/apple_36298.png</link>
    <link>http://galeri.uludagsozluk.com/38/apple_36298.png</link>
    <link>http://galeri.uludagsozluk.com/38/apple_36298.png</link>
    <link>http://galeri.uludagsozluk.com/38/apple_36298.png</link>    
</links>
</Album>
</Albums>
...