TBXML Parser Ervaring discussie in Ontwikkelen voor iOS forum; ( verdwijnt na registratie ) Ontwikkelaars, Ik wil in mijn huidige project maar eens TBXML gebruiken, het schijnt: licht, snel en gebruiksvriendelijk te zijn. Graag wil ik weten wat jullie ...
|
Registreer | FAQ | Ledenlijst | Kalender | Berichten van vandaag | Zoeken |
#1
|
|||
|
|||
TBXML Parser Ervaring
Ontwikkelaars,
Ik wil in mijn huidige project maar eens TBXML gebruiken, het schijnt: licht, snel en gebruiksvriendelijk te zijn. Graag wil ik weten wat jullie ervaring met de parser zijn. Ik heb een XML met bijv. Code:
<assessmentDetails> <assessment> <assessmentName>Test1</assessmentName> <assessmentType>Coursework</assessmentType> <assessmentWeighting>30</assessmentWeighting> </assessment> </assessmentDetails> Maar als ik meerdere childs heb met bijv. Code:
<assessmentDetails> <assessment> <assessmentName>Test1</assessmentName> <assessmentType>Coursework</assessmentType> <assessmentWeighting>30</assessmentWeighting> </assessment> <assessment> <assessmentName>Coursework</assessmentName> <assessmentType>Coursework</assessmentType> <assessmentWeighting>40</assessmentWeighting> </assessment> <assessment> <assessmentName>Test2</assessmentName> <assessmentType>Coursework</assessmentType> <assessmentWeighting>30</assessmentWeighting> </assessment> </assessmentDetails> Code:
TBXMLElement *assessment= [TBXML childElementNamed:@"assessmentName" parentElement:element]; NSString *name = [TBXML textForElement:assessment]; label.text = [NSString stringWithFormat:@"%@", name]; Kort: Ik wil met TBXML de drie 'assessmentName' schrijven naar UILabel. Bedankt!
__________________
---- Med. iOS Developer ----
|
|
|
Gesponsorde links (verdwijnt na registratie)
|
#2
|
||||
|
||||
Werkt bij mij echt heel fijn. Lekker snel en simpel, hoewel ik tegenwoordig liever JSON gebruik dan XML, maar soms is het niet anders en dan gebruik ik altijd TBXML.
In jouw geval werkt het voor slechts 1 element, omdat je natuurlijk een loopje moet maken. Je voert nu gewoon 1 keer die actie uit, terwijl er misschien wel meerdere elementen zijn.
__________________
Het grootste voetbalforum van Nederland |
#3
|
|||
|
|||
Do -> While?
Ik ben dat eens tegengekomen op google, maar zonder dat het wordt uitgeschreven naar een UILabel. Dat maakt het juist voor mij, voor nu, moeilijk. Ik ben serieus benieuwd naar een stukje code wat laat zien dat een ander UILabel het 2 element laat zien. Ik wil dit graag, voor mijzelf vooral, werkend hebben om zo iets anders geleerd te hebben. Dank voor de reactie Citaat:
|
#4
|
||||
|
||||
Het lijkt me sowieso niet handig om direct vanuit de parser in een label te gaan schrijven. Ik doen altijd eerst alle info ophalen, deze in een dictionary zetten en bij meerdere elementen gaat er per element een dictionary in een array.
Die array loop ik dan weer rond om alle informatie daar te zetten waar ik het wil hebben. dit is mijn code om een RSS feed uit te lezen. Code:
NSMutableArray *newsArr = [[NSMutableArray alloc] init]; TBXML *tbxml = [TBXML tbxmlWithURL:url]; TBXMLElement *root = tbxml.rootXMLElement; if (root) { TBXMLElement *channelElement = [TBXML childElementNamed:@"channel" parentElement:root]; if (channelElement != nil) { //NSLog(@"channel"); TBXMLElement *loopElement = [TBXML childElementNamed:@"item" parentElement:channelElement]; if (loopElement != nil) { do { NSMutableDictionary *newsDict = [[NSMutableDictionary alloc] initWithCapacity:4]; //NSLog(@"nieuwsItem"); TBXMLElement *titleElement = [TBXML childElementNamed:@"title" parentElement:loopElement]; TBXMLElement *pubDateElement = [TBXML childElementNamed:@"pubDate" parentElement:loopElement]; TBXMLElement *contentElement = [TBXML childElementNamed:@"content:encoded" parentElement:loopElement]; TBXMLElement *linkElement = [TBXML childElementNamed:@"link" parentElement:loopElement]; TBXMLElement *imgElement = [TBXML childElementNamed:@"image" parentElement:loopElement]; [newsDict setValue:[TBXML textForElement:titleElement] forKey:@"title"]; [newsDict setValue:[TBXML textForElement:pubDateElement] forKey:@"pubDate"]; [newsDict setValue:[TBXML textForElement:contentElement] forKey:@"content"]; [newsDict setValue:[TBXML textForElement:linkElement] forKey:@"link"]; [newsDict setValue:[TBXML textForElement:imgElement] forKey:@"image"]; [newsArr addObject:newsDict]; } while ((loopElement = loopElement->nextSibling)); } } } Anders met een loopje de info in labels zetten. |
#5
|
|||
|
|||
Ik heb hiervoor eens NSXMLParser gebruikt om ook het een en ander naar een paar uilabels te schrijven.
zie onderstaand code: Code:
//cell-1 if (counter == 0) { secondTempLabel.text = tempStrToDisp; } //cell-2 if (counter == 1) { tirthTempLabel.text = tempStrToDisp; } //cell-3 if (counter == 2) { fourthTempLabel.text = tempStrToDisp; } //increment //This will only get incremented 4 times counter = counter + 1; Ik kan bij TBXML niet een soortgelijk functie vinden. Wat ik wel kan met TBXML is dat ik de eerste laag wel kan parsen. Zie code: Code:
records = [NSMutableArray array]; [records retain]; TBXML * XML = [[TBXML tbxmlWithURL:[NSURL URLWithString:@"#########.XML"]] retain]; TBXMLElement *rootXML = XML.rootXMLElement; TBXMLElement *results = [TBXML childElementNamed:@"kaas" parentElement:rootXML]; TBXMLElement *WOEID = [TBXML childElementNamed:@"kilo" parentElement:results]; NSString *woeid = [TBXML textForElement:WOEID]; [records addObject:[NSArray arrayWithObjects: [TBXML textForElement:WOEID],nil]]; tirthTempLabel.text = woeid; |
#6
|
|||
|
|||
Even een update. Ik heb iets gevonden om een aantal elementen te kunnen tonen in verschillende UILabels. Zie code.
Code:
TBXMLElement *element = [TBXML childElementNamed:@"####" parentElement:root]; int count = 1; while (element != nil) { if (count == 1) { TBXMLElement *tempE = [TBXML childElementNamed:@"####" element]; records = [NSMutableArray array]; [records retain]; [records addObject:[NSArray arrayWithObjects: [TBXML textForElement:tempE],nil]]; NSString *tempe = [TBXML textForElement:tempE]; secondTempLabel.text = tempe; } if (count == 2) { TBXMLElement *tempB = [TBXML childElementNamed:@"####" element]; records = [NSMutableArray array]; [records retain]; [records addObject:[NSArray arrayWithObjects: [TBXML textForElement:tempB],nil]]; NSString *tempb = [TBXML textForElement:tempB]; tirthTempLabel.text = tempb; } weatherElement = [TBXML nextSiblingNamed:@"####" element]; count++; } |
#7
|
||||
|
||||
Een flauwe: het Nederlandse "derde" spel je in het Engels "third", niet "tirth"...
__________________
We are one, but we are not the same... Talk to each other! |
#8
|
|||
|
|||
|
#9
|
|||
|
|||
JSON? Hoe gebruik je het? Wat is je ervaring.
Kan je het meer toelichten.. Citaat:
|
Er zijn 1 actieve gebruikers die momenteel deze discussie bekijken (0 leden en 1 gasten) |
|
Soortgelijke discussies |
||||
Discussie | Auteur | Forum | Reacties | Laatste bericht |
Itunes reviews parser | Dreissen | Ontwikkelen voor iOS | 2 | 12-04-11 10:20 |
XML Parser | Dreissen | Ontwikkelen voor iOS | 5 | 17-11-10 16:24 |
Ervaring cases | wouter2190 | Archief | 2 | 13-08-10 08:05 |
ervaring | henkenmirella | Archief | 1 | 19-08-09 20:44 |
XML parser het lukt niet helemaal | Dreissen | Ontwikkelen voor iOS | 17 | 25-05-09 16:53 |
|
|