Maison >développement back-end >Tutoriel XML/RSS >Introduction détaillée à l'analyse XML (graphiques et texte)

Introduction détaillée à l'analyse XML (graphiques et texte)

黄舟
黄舟original
2017-03-17 17:22:091766parcourir

Ce tutoriel utilise l'objet NSXMLParser pour analyser les fichiers XML. Les résultats de l'analyse sont affichés par Table View. Ce didacticiel est construit sur iOS 9.3 sur Xcode 7.3.1.
Ouvrez Xcode et créez une nouvelle application à fenêtre unique. Le nom est IOS9XMLParserTutorial et le nom et le logo de l'organisation sont déterminés par vous-même. Sélectionnez Swift comme langue et iPhone comme appareil.

Introduction détaillée à lanalyse XML (graphiques et texte)

Supprimez le contrôleur de vue du storyboard et faites glisser un contrôleur de navigation vers le plan de travail vide. Ce contrôleur de navigation transportera automatiquement un contrôleur de vue de table. Lorsque vous supprimez le View Controller initial , le point de départ du storyboard correspondant est également supprimé. Nous sélectionnons donc d'abord le contrôleur de navigation nouvellement ajouté et cochons la case "Est le contrôleur de vue initial" dans l'inspecteur d'attributs comme point de départ du nouveau storyboard.

Introduction détaillée à lanalyse XML (graphiques et texte)

Double-cliquez sur la barre de titre du contrôleur de vue capable pour la définir sur "Livres". Sélectionnez la cellule de la vue Tableau et définissez sa propriété Style sur Sous-titre dans l'inspecteur d'attributs.

Introduction détaillée à lanalyse XML (graphiques et texte)

Le Storyboard ressemble à ceci

Introduction détaillée à lanalyse XML (graphiques et texte)

Maintenant que nous avons supprimé le View Controller initial, ViewController.swift peut également être supprimés ensemble. Sélectionnez iOS->Source->Cocoa Touch Class Ajoutez un nouveau fichier, nommez-le TableViewController et définissez-le comme sous-classe de UITableViewController.

Introduction détaillée à lanalyse XML (graphiques et texte)

Accédez au Storyboard, sélectionnez le contrôleur de vue de table, puis définissez la section Classe personnalisée sur TableViewController dans l'inspecteur d'identité.

Introduction détaillée à lanalyse XML (graphiques et texte)

Sélectionnez iOS->Source->Swift Fichier pour ajouter un nouveau fichier. Nommez-le Books.xml

Introduction détaillée à lanalyse XML (graphiques et texte)

Ouvrez Books.xml et remplacez-le par le code suivant

<?xml version="1.0"?>
<catalog>
    <book id="1">
        <title>To Kill a Mockingbird</title>
        <author>Harper Lee</author>
    </book>
    <book id="2">
        <title>1984</title>
        <author>George Orwell</author>
    </book>
    <book id="3">
        <title>The Lord of the Rings</title>
        <author>J.R.R Tolkien</author>
    </book>
    <book id="4">
        <title>The Catcher in the Rye</title>
        <author>J.D. Salinger</author>
    </book>
    <book id="5">
        <title>The Great Gatsby</title>
        <author>F. Scott Fitzgerald</author>
    </book>
</catalog>

Sélectionnez iOS->Source->Swift Fichier Ajouter un nouveau Les fichiers servent de donnéesmodèles pour différents éléments du fichier XML. Appelons-le Book.swift et remplaçons-le par le code suivant

import Foundation

class Book {
    var bookTitle: String = String()
    var bookAuthor: String = String()
}

Allez dans le fichier tableViewController.swift et ajoutez les variables suivantes.

var books: [Book] = []
var eName: String = String()
var bookTitle = String()
var bookAuthor = String()

Réécrivez la méthode viewDidLoad en tant qu'objet

override func viewDidLoad() {
    super.viewDidLoad()
        
    if let path = NSBundle.mainBundle().URLForResource("books", withExtension: "xml") {
        if let parser = NSXMLParser(contentsOfURL: path) {
            parser.delegate = self
            parser.parse()
        }
    }
}

NSMLParser pour analyser le fichier books.xml dans le bundle. Ajoutez la source de données suivante et la méthode déléguée de la vue table

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return books.count
}
    
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)
        
    let book = books[indexPath.row]
        
    cell.textLabel?.text = book.bookTitle
    cell.detailTextLabel?.text = book.bookAuthor

    return cell
}

Les données de titre et d'auteur de tous les livres seront enregistrées dans le tableau des livres et présentées par la vue table. Ensuite, implémentez la méthode déléguée de NSXMLParser.

// 1
func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, 
qualifiedName qName: String?, attributes attributeDict: [String : String]) {
    eName = elementName
    if elementName == "book" {
        bookTitle = String()
        bookAuthor = String()
    }
}
    
// 2  
func parser(parser: NSXMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {
    if elementName == "book" {
            
    let book = Book()
    book.bookTitle = bookTitle
    book.bookAuthor = bookAuthor
            
    books.append(book)
    }
}
    
// 3
func parser(parser: NSXMLParser, foundCharacters string: String) {
    let data = string.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
        
    if (!data.isEmpty) {
        if eName == "title" {
            bookTitle += data
        } else if eName == "author" {
            bookAuthor += data
        }
    }
}
  1. Cette méthode est déclenchée lorsque l'objet d'analyse rencontre la balise de début de ""

  2. Cette méthode est déclenchée quand Lorsque l'objet d'analyse rencontre la balise de fin "", il est déclenché

  3. Ici, le processus d'analyse est réellement exécuté. Les balises titre et auteur seront analysées et les variables correspondantes seront initialisées.

Construisez et exécutez le projet . Vous pouvez voir les titres et les auteurs de tous les livres dans TableViewController.
Introduction détaillée à lanalyse XML (graphiques et texte)


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn