
Παρόλο που ένας ενσωματωμένος αναλυτής XML προσθέτει πραγματική αξία σε μια νέα εφαρμογή για επιτραπέζιους υπολογιστές ή κινητές συσκευές, η κωδικοποίηση αυτής της λειτουργικότητας απαιτεί συνήθως πολύ χρόνο ανάπτυξης και δοκιμή beta. Το πρόγραμμα Xcode της Apple περιλαμβάνει ένα πρόγραμμα ανάλυσης XML που παρακάμπτει το μεγαλύτερο μέρος αυτής της χειροκίνητης εργασίας. Ένα αρχείο XML μπορεί να περιέχει οτιδήποτε, από βασικά δεδομένα σχετικά με την εφαρμογή σας έως μια ροή RSS για έναν ιστότοπο. Μπορούν επίσης να είναι ένας εξαιρετικός τρόπος ενημέρωσης των πληροφοριών εντός της εφαρμογής σας από απόσταση, παρακάμπτοντας έτσι την ανάγκη υποβολής ενός νέου δυαδικού στην Apple απλώς για να προσθέσετε ένα νέο στοιχείο σε μια λίστα.
Η διαδικασία Xcode
Η ενσωματωμένη διαδικασία Xcode περιέχει βήματα για την προετοιμασία των μεταβλητών που θα χρησιμοποιηθούν, την έναρξη της διαδικασίας ανάλυσης XML, την τροφοδοσία αυτής της επεξεργασίας ενός αρχείου, την αξιολόγηση μεμονωμένων στοιχείων και των χαρακτήρων (τιμή) εντός αυτών των στοιχείων, αναγνωρίζοντας το τέλος ενός μεμονωμένου στοιχείου και τερματισμός της διαδικασίας ανάλυσης.
Χρησιμοποιήστε το πρόγραμμα ανάλυσης XML
Για να διευκρινίσουμε τις λεπτομέρειες, θα αναλύσουμε ένα παράδειγμα αρχείου από το Διαδίκτυο, διαβιβάζοντάς το μια συγκεκριμένη διεύθυνση ιστού (URL). Ξεκινήστε με τη δημιουργία του αρχείου κεφαλίδας. Αυτό είναι ένα παράδειγμα ενός πολύ βασικού αρχείου κεφαλίδας για έναν ελεγκτή προβολής λεπτομερειών με τις ελάχιστες απαιτήσεις για την ανάλυση του αρχείου μας: @interface RootViewController: UITableViewController {
DetailViewController * detailViewController;
NSXMLParser * rssParser;
NSMutableArray * άρθρα;
NSMutableDictionary * στοιχείο;
NSString * currentElement;
NSMutableString * ElementValue;
Σφάλμα BOOLParsing;
}
@property (nonatomic, retain) IBOutlet DetailViewController * detailViewController;
– (void) parseXMLFileAtURL: (NSString *) URL;
type = «code»>
Η συνάρτηση parseXMLFileAtURL ξεκινά τη διαδικασία. Όταν τελειώσει, τα «άρθρα» NSMutableArray κρατούν τα δεδομένα. Ο πίνακας αποτελείται από μεταβλητά λεξικά με κλειδιά που σχετίζονται με τα ονόματα πεδίων στο αρχείο XML. Στη συνέχεια, αρχικοποιήστε τη διαδικασία: – (void) parserDidStartDocument: (NSXMLParser *) parser {
NSLog (@ «Το αρχείο βρέθηκε και ξεκίνησε η ανάλυση»);
}
type = «code»> Αυτή η συνάρτηση εκτελείται στην αρχή της διαδικασίας. Δεν χρειάζεται να βάλετε τίποτα σε αυτήν τη συνάρτηση, αλλά εάν θέλετε να εκτελέσετε μια εργασία όταν αρχίσει η ανάλυση του αρχείου, εδώ θα βάλατε τον κωδικό σας.
Δώστε οδηγίες στο πρόγραμμα να κατεβάσει κάτι
Στη συνέχεια, δώστε εντολή στο πρόγραμμα να κατεβάσει κάτι: – (void) parseXMLFileAtURL: (NSString *) URL
{
NSString * agentString = @ «Mozilla / 5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit / 525.27.1 (KHTML, like Gecko) Έκδοση / 3.2.1 Safari / 525.27.1»;
NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:
[NSURL URLWithString:URL]];
[request setValue:agentString forHTTPHeaderField:@»User-Agent»];
xmlFile = [ NSURLConnection sendSynchronousRequest:request returningResponse: nil error: nil ];
άρθρα = [[NSMutableArray alloc] μέσα σε αυτό];
errorParsing = ΟΧΙ;
rssParser = [[NSXMLParser alloc] initWithData: xmlFile];
[rssParser setDelegate:self];
// Ίσως χρειαστεί να ενεργοποιήσετε ορισμένα από αυτά ανάλογα με τον τύπο του αρχείου XML που αναλύετε
[rssParser setShouldProcessNamespaces:NO];
[rssParser setShouldReportNamespacePrefixes:NO];
[rssParser setShouldResolveExternalEntities:NO];
[rssParser parse];
}
type = «code»>
Αυτή η λειτουργία δίνει εντολή στον κινητήρα να κατεβάσει ένα αρχείο σε μια συγκεκριμένη διεύθυνση ιστού (URL) και να ξεκινήσει τη διαδικασία ανάλυσης του. Λέμε στον απομακρυσμένο διακομιστή ότι είμαστε ένα Safari που εκτελείται σε Mac σε περίπτωση που ο διακομιστής προσπαθήσει να ανακατευθύνει το iPhone / iPad σε μια έκδοση για κινητά. Οι επιλογές στο τέλος είναι συγκεκριμένες για συγκεκριμένα αρχεία XML. Τα περισσότερα αρχεία RSS και τα γενικά αρχεία XML δεν θα πρέπει να είναι ενεργοποιημένα.
Σφάλμα-Ελέγξτε το αποτέλεσμα
Εκτελέστε βασικούς ελέγχους σφαλμάτων στο αποτέλεσμα: – (void) parser: (NSXMLParser *) parser parseError Πραγματοποιήθηκε: (NSError *) parseError {
NSString * errorString = [NSString stringWithFormat:@»Error code %i», [parseError code]];
NSLog (@ «Σφάλμα ανάλυσης XML:% @», errorString);
errorParsing = ΝΑΙ;
} Αυτή η δρομολόγηση ελέγχου σφαλμάτων ορίζει μια δυαδική τιμή εάν συναντήσει σφάλμα. Μπορεί να χρειαστείτε κάτι πιο συγκεκριμένο εδώ, ανάλογα με το τι κάνετε. Εάν απλά πρέπει να εκτελέσετε κάποιο κώδικα μετά την επεξεργασία σε περίπτωση σφάλματος, το
class = «ql-σύνταξη»>
Αυτή η ρουτίνα ελέγχου σφαλμάτων ορίζει μια δυαδική τιμή εάν συναντήσει σφάλμα. Μπορεί να χρειαστείτε κάτι πιο συγκεκριμένο εδώ, ανάλογα με το τι κάνετε. Εάν απλά πρέπει να εκτελέσετε κάποιο κώδικα μετά την επεξεργασία σε περίπτωση σφάλματος, τότε μπορεί να κληθεί το σφάλμα ανάλυσης δυαδικής μεταβλητής.
Αναλύστε το ανακτημένο περιεχόμενο
Στη συνέχεια, το πρόγραμμα αναλύει το ανακτημένο περιεχόμενο και το αναλύει: – (void) parser: (NSXMLParser *) parser didStartElement: (NSString *) elementName namespaceURI: (NSString *) namespaceURI qualifiedName: (NSString *) qName χαρακτηριστικά: (NSDictionary * ) χαρακτηριστικόDict {
currentElement = [elementName copy];
ElementValue = [[NSMutableString alloc] μέσα σε αυτό];
αν ([elementName isEqualToString:@»item»]) {
αντικείμενο = [[NSMutableDictionary alloc] μέσα σε αυτό];
}
}
type = «code»>
Το κρέας του προγράμματος ανάλυσης XML περιέχει τρεις συναρτήσεις, μία που τρέχει στην αρχή ενός μεμονωμένου στοιχείου, μία που τρέχει κατά τη μέση της ανάλυσης του στοιχείου και μία που τρέχει στο τέλος του στοιχείου. Για αυτό το παράδειγμα, θα αναλύσουμε ένα αρχείο παρόμοιο με τα αρχεία RSS που αναλύουν τα στοιχεία σε ομάδες κάτω από την επικεφαλίδα του αντικείμενα μέσα στο αρχείο XML. Στην αρχή της επεξεργασίας, ελέγχουμε το όνομα στοιχείου «item» και εκχωρούμε το λεξικό αντικειμένων μας όταν εντοπίζεται μια νέα ομάδα. Διαφορετικά, αρχικοποιούμε τη μεταβλητή μας για την τιμή: – (void) parser: (NSXMLParser *) parser foundCharacters: (NSString *) string {
[ElementValue appendString:string];
}
type = «code»>
Όταν βρίσκουμε χαρακτήρες, τους προσθέτουμε απλά στη μεταβλητή μας ElementValue: – (void) parser: (NSXMLParser *) parser didEndElement: (NSString *) elementName namespaceURI: (NSString *) namespaceURI qualifiedName: (NSString *) qName {
αν ([elementName isEqualToString:@»item»]) {
[articles addObject:[item copy]];
} αλλιώς {
[item setObject:ElementValue forKey:elementName];
}
}
type = «code»>
Τι συμβαίνει όταν η ανάλυση είναι πλήρης
Όταν το πρόγραμμα ολοκληρώσει την επεξεργασία ενός στοιχείου, πρέπει να κάνει ένα από τα δύο πράγματα:
- Εάν το τελικό στοιχείο είναι είδος, ολοκληρώσαμε την ομάδα μας, οπότε θα προσθέσουμε το λεξικό μας στη σειρά των άρθρων μας.
- Εάν το στοιχείο δεν είναι είδος, θα ορίσουμε την τιμή στο λεξικό μας με ένα κλειδί που ταιριάζει με το όνομα του στοιχείου. (Αυτό σημαίνει ότι δεν χρειαζόμαστε μεμονωμένη μεταβλητή για κάθε πεδίο στο αρχείο XML. Μπορούμε να τις επεξεργαστούμε λίγο πιο δυναμικά.)
Αυτή είναι η τελευταία λειτουργία που απαιτείται για τη ρουτίνα ανάλυσης. τελειώνει το έγγραφο. Βάλτε έναν τελικό κωδικό εδώ ή καθορίστε μια υπορουτίνα διόρθωσης σφαλμάτων: – (void) parserDidEndDocument: (NSXMLParser *) parser {
εάν (errorParsing == ΟΧΙ)
{
NSLog (@ «Η επεξεργασία XML ολοκληρώθηκε!»);
} αλλιώς {
NSLog (@ «Παρουσιάστηκε σφάλμα κατά την επεξεργασία XML»);
}
}
type = «code»>
Αποθηκεύστε τα δεδομένα
Ένα πράγμα που πολλές εφαρμογές μπορεί να θέλουν να κάνουν εδώ είναι να αποθηκεύσουν τα δεδομένα ή το αρχείο XML σε ένα αρχείο στη συσκευή. Με αυτόν τον τρόπο, εάν η συσκευή δεν είναι συνδεδεμένη στο Διαδίκτυο την επόμενη φορά που θα φορτωθεί η εφαρμογή, θα εξακολουθεί να λαμβάνει αυτές τις πληροφορίες. Φυσικά, δεν μπορούμε να ξεχάσουμε το πιο σημαντικό μέρος: να πείτε στην εφαρμογή σας να αναλύσει το αρχείο (και να του δώσει μια διεύθυνση ιστού για να το βρει!). Για να ξεκινήσετε τη διαδικασία, προσθέστε αυτήν τη γραμμή κώδικα στο κατάλληλο μέρος όπου θέλετε να κάνετε την επεξεργασία XML:
[self parseXMLFileAtURL:@»http://www.webaddress.com/file.xml»];
type = «code»>
Αναφέρετε αυτό το άρθρο
Μορφή mla apa chicago Η αναφορά σας
Έθνη, Ντάνιελ. «Τρόπος ανάλυσης αρχείων XML σε Xcode.» ThoughtCo, Μάιος. 21, 2021, thinkco.com/parse-xml-files-in-xcode-1994288.
Έθνη, Ντάνιελ. (2021, 21 Μαΐου). Τρόπος ανάλυσης αρχείων XML σε Xcode. Ανακτήθηκε από το https://www.thoughtco.com/parse-xml-files-in-xcode-1994288
Έθνη, Ντάνιελ. «Τρόπος ανάλυσης αρχείων XML σε Xcode.» ThoughtCo. https://www.thoughtco.com/parse-xml-files-in-xcode-1994288 (προσπελάθηκε την 1η Ιουνίου 2021).
αντιγραφή παραπομπής