iPhone TBXML Looping Und Analysieren von Daten
Grundsätzlich habe ich eine XML-Antwort zurückgegeben und eine Zeichenfolge, und ich brauche, um Schleifen durch die xml und speichern alle Informationen, die in einem array. hier ist der xml -
<?xml version="1.0" encoding="UTF-8"?>
<Response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://schema.2sms.com/2.0/schema/0310_ResponseReportStandard.xsd" Version="1.0">
<Error>
<ErrorCode>00</ErrorCode>
<ErrorReason>OK</ErrorReason>
</Error>
<ResponseData>
<Identification>
<UserID>jonathan.pink@2sms.com</UserID>
</Identification>
<Result>2 records were returned</Result>
<Detail>
<ReportTitle>Message Summary: Today</ReportTitle>
<Record>
<Destination>447790686158</Destination>
<Status>WithNetwork</Status>
<GUID><![CDATA[2011-03-22T10:54:22.097Z]]></GUID>
<DateSubmitted>2011-03-22T10:54:22.097</DateSubmitted>
<DateToSend></DateToSend>
<DateSent>2011-03-22T10:54:22.533</DateSent>
<DateReceived></DateReceived>
<Message><![CDATA[Yet again another test]]></Message>
<ID>2011-03-22 10:54:22.250HIHIIOJTFVETW85TS</ID>
</Record>
<Record>
<Destination>447790686158</Destination>
<Status>SUCCESS</Status>
<GUID><![CDATA[2011-03-22T10:50:40.064Z]]></GUID>
<DateSubmitted>2011-03-22T10:50:40.063</DateSubmitted>
<DateToSend></DateToSend>
<DateSent>2011-03-22T10:50:42.473</DateSent>
<DateReceived>2011-03-22T10:50:54.570</DateReceived>
<Message><![CDATA[This is a test]]></Message>
<ID>2011-03-22 10:50:40.210DRUDVMCEZGETW85TS</ID>
</Record>
<ReportPage ReportID="775797" ItemsPerPage="25" Page="1" TotalItems="2" />
</Detail>
</ResponseData>
</Response>
Brauche ich diese 2 <records>
und dort alle Daten gespeichert sind in ein array. so....
einem array Datensätze -> array von records -> array der einzelnen Datensätze, Daten....
Ich habe hier sitzt und versucht, diese Arbeit heraus mit TBXML die ist einfach genug, schnappen Sie sich einen einzelnen Knoten.... aber ich kann das nicht 🙁
- Bitte sehen, ob Sie akzeptieren kann, mehr Antworten. Sie scheinen zu haben, vernünftige Antworten auf einige Ihrer Fragen, sind die linken nicht akzeptiert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Okay, dein Erster Schritt wäre eine Klasse, wird die Daten analysieren. Rufen Sie
RecordParser
zum Beispiel. Wir müssen jetzt hinzufügen, ein paar Methoden in der header -, sowie einNSMutableArray
.Nun, gehen Sie vor und laden in Ihre Umsetzung. Jetzt brauchen wir, um diese zwei Methoden das zu tun, was wir wollen.
Grundsätzlich auf diese Methode greifen, die XML-Datei in Frage und beginnen den Prozess analysieren. Auch, Sie initialisieren das array und das behalten Sie. Nun kommen wir zum Käse.
Im Grunde, was die Methode tut, ist quer die XML-Datei nach einem element mit dem Namen, den Sie suchen, dann schnappt er sich die Daten von den untergeordneten Knoten. Darüber hinaus werden die Daten Hinzugefügt, um die
records
array. Also im Grunde, wenn Sie es geschafft haben sollten, die Daten, die Sie wollen in Ihremrecords
array, das Sie manipulieren können, wie Sie wollen.Das ist komplett ungetestet. Nicht mir die Schuld, wenn es explodiert dein computer und tötet Ihre Katze. Ich normalerweise würde nicht nehmen, die ganze Arbeit zu schreiben, die eine komplette Methode, wie diese, aber ich zufällig wie
TBXML
. Bitte lassen Sie mich wissen, wenn es funktioniert. Ich wirklich würde schätzen wissen.objectAtIndex
des Arrays angezeigt werden sollen, in Ihrer Tabelle incellForRowAtIndexPath
.records
array oben), die in Ihrer Frage? Dann kann ich Sie beantworten mehr klar.Ich schrieb rekursive Funktion analysiert jede ordnungsgemäß erstellte xml mit TBXML Bibliothek.
In meinem Projekt habe ich eine Klasse zum Parsen von XML. Es hat eine Klasse Methode mit der Bezeichnung: + (id) infoOfElement: (TBXMLElement*) element
Wie zu verwenden:
Verwenden von Apple
NSXMLParser
; es machte sein old-school und alle, aber es ist wirklich effizient.Setup Ihre XMLParser entsprechend (verwenden Sie die
NSXMLParserDelegate
- Protokoll).Einmal Ihre parser trifft, rufen Sie die
parser:didStartElement:namespaceURI:qualifiedName:attributes:
Delegierter Rückruf und dieelementName
gleichRecord
(von dem, was Sie zu wollen scheinen).Alloc' init' eine
NSMutableDictionary
. Dann wie oben, wennelementName
gleichDestination
dann[myDictionary setObject: elementName forKey: @"Destination"]
und et cætera.Hoffe, dass hat geholfen :).
Kleine Randnotiz: lieber mit
Apple's
"Technik" anstelle von 3rd-parties: es ist effizienter, und die Möglichkeiten sind endlosen.NSXMLParser
. Ich benutze TBXML und ich Liebe es. 🙂Ist es besser, zu verwenden, NSXMLParser, weil es eine offizielle Version von Apple.
Alle in der Dokumentation der NSXMLParser ist hier.
Auch hier ist eine NSXMLParser Tutorial.