Grundsätzlich habe ich eine XML-Antwort, die zurückgegeben wird und eine Zeichenfolge, und ich muss durch die XML-Schleife und speichert alle Informationen in einem Array. Hier ist die XML
%Vor% Ich brauche diese 2 <records>
und alle dort gespeicherten Daten in einem Array. so ....
ein Datensatzarray - & gt; Array von Datensätzen - & gt; Array von jedem Datensatz, Daten ....
Ich habe hier gesessen und versucht, dies mit TBXML auszuprobieren, was einfach genug ist, um einen einzigen Knoten zu erfassen ... aber ich kann das nicht tun :(
Alles klar, Ihr erster Schritt wäre, eine Klasse zu erstellen, die die Daten analysiert. Nennen Sie es zum Beispiel RecordParser
. Wir müssen jetzt ein paar Methoden in der Kopfzeile hinzufügen, sowie ein NSMutableArray
.
Nun, fahren Sie fort und berechnen Sie Ihre Implementierung. Wir müssen nun diese beiden Methoden implementieren, um das zu tun, was wir tun sollen.
%Vor%Grundsätzlich wird diese Methode die fragliche XML-Datei erfassen und den Analyseprozess starten. Außerdem initialisieren Sie Ihr Array und behalten es bei. Jetzt kommen wir zum Käse.
%Vor% Im Grunde bewirkt die Methode, dass die XML-Datei nach einem Element mit dem gesuchten Namen sucht. Anschließend werden die Daten von den untergeordneten Knoten abgerufen. Außerdem werden die Daten dem Array records
hinzugefügt. Also, wenn es fertig ist, sollte es die gewünschten Daten in Ihrem records
-Array haben, das Sie beliebig manipulieren können.
Dies ist völlig ungeprüft . Gib mir nicht die Schuld, wenn es deinen Computer in die Luft jagt und deine Katze tötet. Ich würde normalerweise nicht die ganze Arbeit nehmen, um eine vollständige Methode wie diese zu schreiben, aber ich mag TBXML
. Bitte lassen Sie mich wissen, wenn es funktioniert. Ich wirklich würde es zu schätzen wissen.
Ich habe eine rekursive Funktion geschrieben, um jedes korrekt erstellte XML mit der TBXML-Bibliothek zu analysieren.
In meinem Projekt habe ich eine Klasse, um XML zu analysieren. Es hat eine Klassenmethode namens: + (id) infoOfElement: (TBXMLElement *) element
Wie zu verwenden:
%Vor% Verwende Apples NSXMLParser
; es wurde altmodisch und alles andere als wirklich effizient.
Richten Sie Ihren XMLParser entsprechend ein (verwenden Sie das NSXMLParserDelegate
-Protokoll).
Sobald Ihr Parser den Aufruf von parser:didStartElement:namespaceURI:qualifiedName:attributes:
delegiert hat, rufen Sie ihn zurück und elementName
ist gleich Record
(von dem, was Sie zu haben scheinen).
Alloc 'init' an NSMutableDictionary
. Dann wie oben, wenn elementName
gleich Destination
dann [myDictionary setObject: elementName forKey: @"Destination"]
und et cætera ist.
Hoffnung, die geholfen hat:).
Kleine Randnotiz: Verwenden Sie lieber Apple's
"Technologie" anstelle von Drittanbietern: es ist effizienter und die Möglichkeiten sind endlos .
Tags und Links objective-c iphone ios ios4 cocoa-touch