ホームページ >バックエンド開発 >XML/RSS チュートリアル >XML 解析 (グラフィックスとテキスト) の詳細な紹介

XML 解析 (グラフィックスとテキスト) の詳細な紹介

黄舟
黄舟オリジナル
2017-03-17 17:22:091774ブラウズ

このチュートリアルでは、NSXMLParser object を使用して XML ファイルを解析します。解析結果はTable Viewで表示されます。このチュートリアルは、Xcode 7.3.1 上の iOS 9.3 上に構築されています。
Xcode を開いて、新しい単一ウィンドウ アプリケーションを作成します。名前はIOS9XMLParserTutorialで、組織名と組織ロゴは自分で決めます。言語として Swift を選択し、デバイスとして iPhone を選択します。

XML 解析 (グラフィックスとテキスト) の詳細な紹介

ビュー コントローラーをストーリーボードから削除し、ナビゲーション コントローラーを空のアートボードにドラッグします。このナビゲーション コントローラーには、自動的にテーブル ビュー コントローラーが組み込まれます。最初の View Controller を 削除すると、対応するストーリーボードの開始点 も削除されます。そのため、最初に新しく追加したナビゲーション コントローラーを選択し、新しいストーリーボードの開始点として属性インスペクターで [初期ビュー コントローラーである] チェックボックス

にチェックを入れます。

XML 解析 (グラフィックスとテキスト) の詳細な紹介

有効な View Controller のタイトル バーをダブルクリックして、「Books」に設定します。テーブルビューセルを選択し、属性インスペクターでそのスタイルプロパティ

をSubtitleに設定します。

XML 解析 (グラフィックスとテキスト) の詳細な紹介

ストーリーボードはこんな感じ

XML 解析 (グラフィックスとテキスト) の詳細な紹介

初期のViewControllerを削除したので、ViewController.swiftも一緒に削除できます。 iOS -> ソース -> Cocoa Touch Class

を選択し、新しいファイルを追加し、TableViewController という名前を付け、UITableViewController のサブクラスとして設定します。

XML 解析 (グラフィックスとテキスト) の詳細な紹介

ストーリーボードに移動し、テーブルビューコントローラーを選択し、アイデンティティインスペクターでカスタムクラスセクションをTableViewControllerに設定します。

XML 解析 (グラフィックスとテキスト) の詳細な紹介

iOS -> ソース -> Swift ファイル

を選択し、新しいファイルを追加します。 Books.xml という名前を付けます

XML 解析 (グラフィックスとテキスト) の詳細な紹介

Books.xml を開いて次のコードに置き換えます

<?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>
iOS->Source->Swift File を選択して、XML ファイル内のさまざまな項目のデータとして新しいファイルを追加しますモデル

。これを Book.swift と呼び、次のコードに置き換えましょう

import Foundation

class Book {
    var bookTitle: String = String()
    var bookAuthor: String = String()
}
tableViewController.swift ファイルに移動し、次の 変数

を追加します。

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

oadメソッドを

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()
        }
    }
}

NSXMLParserオブジェクトに書き換えて、バンドル内のbooks.xmlファイルを解析します。次のデータ ソースとテーブル ビューのデリゲート メソッドを追加します

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
}
すべての書籍のタイトルと著者データは書籍 配列

に保存され、テーブル ビューによって表示されます。次に、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. このメソッドは、解析オブジェクトが「」の開始タグに遭遇するとトリガーされます
  2. このメソッドは、解析オブジェクトが「」の終了タグに遭遇するとトリガーされます
  3. ここで実際に解析処理が実行されます。タイトルと著者のタグが解析され、対応する変数が初期化されます。


プロジェクトをビルドして実行します。 TableViewController ですべての書籍のタイトルと著者を確認できます。 XML 解析 (グラフィックスとテキスト) の詳細な紹介


🎜

以上がXML 解析 (グラフィックスとテキスト) の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。