Problem beim XML-File attributeDict

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Problem beim XML-File attributeDict

    Hallo zusammen,
    ich habe ein kleines Problem beim Einlesen eines XML File. Folgende Struktur ist im XML FIle:

    Quellcode

    1. <epaper>
    2. <item name="deutschland">
    3. <bild>20101105_001</bild>
    4. ...
    5. <bild>20101105_036</bild>
    6. </item>
    7. <item name="italien">
    8. <bild>20101105_001</bild>
    9. ...
    10. <bild>20101105_036</bild>
    11. </item>
    12. </epaper>
    Alles anzeigen


    Ich möchte nur den Knoten <item name="deutschland"> einlesen. Wie kann man das machen?

    Quellcode

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

    In der Methode kann ich ja über

    Quellcode

    1. [attributeDict valueForKey:@"name"];
    auf die Attribute zugreifen. Wie kann man das nun abfangen?

    Bis jetzt sehen meine XML Methoden wie folgt aus:

    Quellcode

    1. - (void)parser:(NSXMLParser *)parser
    2. didStartElement:(NSString *)elementName
    3. namespaceURI:(NSString *)namespaceURI
    4. qualifiedName:(NSString *)qualifiedName
    5. attributes:(NSDictionary *)attributeDict {
    6. currentElement = [elementName copy];
    7. if ([elementName isEqualToString:@"item"]) {
    8. item = [[NSMutableDictionary alloc] init];
    9. currentBild = [[NSMutableString alloc] init];
    10. }
    11. }
    Alles anzeigen


    Quellcode

    1. - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
    2. if ([elementName isEqualToString:@"item"]) {
    3. [item setObject:currentBild forKey:@"bild"];
    4. [papers addObject:[item copy]];
    5. }
    6. }


    Quellcode

    1. - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
    2. if ([currentElement isEqualToString:@"bild"]) {
    3. [currentBild appendString:string];
    4. }
    5. }


    Folgende Variablen stehen in der der h Datei

    Quellcode

    1. NSXMLParser *xmlParser;
    2. NSMutableArray *papers;
    3. NSMutableDictionary *item;
    4. NSString *currentElement;
    5. NSMutableString *currentBild;


    Als Ergebnis beim einlesen bekommen ich ein Array mit zwei Einträgen, wodrin jeweils die Bildnamen stehen. Ich möchte aber nur den Knoten mit Germany haben und das in einem Array. Wo ist der Fehler? bzw. Denkfehler?

    Danke
  • Du willst nur die deutschen Einträge?

    Quellcode

    1. - (void)parser:(NSXMLParser *)parser
    2. didStartElement:(NSString *)elementName
    3. namespaceURI:(NSString *)namespaceURI
    4. qualifiedName:(NSString *)qualifiedName
    5. attributes:(NSDictionary *)attributeDict {
    6. currentElement = [elementName copy];
    7. if ([elementName isEqualToString:@"item"] && [[attributeDict objectForKey:@"name"] isEqualToString:@"deutschland"]) {
    8. item = [[NSMutableDictionary alloc] init];
    9. currentBild = [[NSMutableString alloc] init];
    10. }
    11. }
    Alles anzeigen
    Inos ist ein Gott aus Gothic, dem Spiel.
  • Hallo nochmal,

    ich brauche nochmal nen TIpp.
    Wenn ich jetzt das eingelesen Array in eine TableView einfließen lassen sieht es wie folgt aus:
    1. Zelle: 2010101105_001 20101105_002 ...............
    2. Zelle: 2010101105_001 20101105_002 ...............
    Zwei Zelle kommen wohl zustanden weil im XML File zwei Item Knoten sind. Mit dem NSLog Befehl werden alle Bilder Einträge angezeigt.

    Quellcode

    1. NSLog(@"%@", [papers objectAtIndex:paperIndex]);
    2. [cell setText:[[papers objectAtIndex:paperIndex] objectForKey:@"bild"]];


    NSLog Ausgabe:

    Quellcode

    1. {
    2. bild = "20101105_001\n\t\t20101105_002\n\t\t20101105_003\n\t\n\t20111105_001\n\t\t20111105_002\n\t\t20111105_003\n\t\n";
    3. }
    4. {
    5. bild = "20101105_001\n\t\t20101105_002\n\t\t20101105_003\n\t\n\t20111105_001\n\t\t20111105_002\n\t\t20111105_003\n\t\n";
    6. }

    So sieht der Code in der cellForRowAtIndexPath Methode aus. Irgendwas stimmt da noch nicht so ganz. Hat jemand eine Idee woran das liegen mag? Komme irgendwie nicht weiter. Wo kann ich nochmal mich ransetzen und was nachlesen oder so.

    Also die Bild Einträge bräuchte ich für eine SliderShow. Über eine URL sollen die Daten im Netz abgefragt werden und die Datei soll als Grafik im Programm erscheinen und dann mit schiebe Gesten jeweils das vordere oder nächste Bild geladen werden.

    Vielen Dank

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Benny990 ()