質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

5073閲覧

XMLファイルのタグ内のデータを取り出したい

M.minoru

総合スコア19

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2016/10/11 02:46

XMLファイルから必要なデータの取得をしようとしています。

以下のような物があるとします。

<name code="8888"> <placeName>東京</placeName> </name>

ここからcode="8888"の8888を取り出したいのですが方法がわかりません。
"東京"を取り出そうとするとXMLParserを使い、以下のコードで取り出すことができています。

// XMLを解析する //XMLファイルから取得する var arrayValues: [String] = [] var Flg = false func loadxml(){ var url_text = "URL" guard let url = URL(string: url_text) else{ print("URLではありません。") return } // インターネット上のXMLを取得し、NSXMLParserに読み込む guard let parser = XMLParser(contentsOf: url) else{ print("エラー?") return } parser.delegate = self; parser.parse() } // XML解析開始時に実行されるメソッド func parserDidStartDocument(_ parser: XMLParser) { print("XML解析開始しました") } // 解析中に要素の開始タグがあったときに実行されるメソッド func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) { print("開始タグ:" + elementName) if elementName == "placeName"{ Flg = true } } // 開始タグと終了タグでくくられたデータがあったときに実行されるメソッド func parser(_ parser: XMLParser, foundCharacters string: String) { print("要素:" + string) if Flg { arrayValues.append(string) Flg = false } } // 解析中に要素の終了タグがあったときに実行されるメソッド func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) { print("終了タグ:" + elementName) } // XML解析終了時に実行されるメソッド func parserDidEndDocument(_ parser: XMLParser) { print("XML解析終了しました") } // 解析中にエラーが発生した時に実行されるメソッド func parser(_ parser: XMLParser, parseErrorOccurred parseError: Error) { print("エラー:" + parseError.localizedDescription) }

しかしこれではタグで挟まれたもの(ここではplaceName)しか取り出すことができません。

<name code="8888">←この部分からcodeである"8888"を取り出そうとするとしたい場合はどうすればいいのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

swift

1// 解析中に要素の開始タグがあったときに実行されるメソッド 2 func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) {

の最後の引数に attributeDict があるようですが、それが属性マップになっているかと。

要素名 elementName が "name" のときに、attributeDict["code"] で取得できるかと思います。

投稿2016/10/11 03:24

編集2016/10/11 03:38
qt6hy

総合スコア149

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

M.minoru

2016/10/11 04:39

ありがとうございます。できました。 attributeDict["code"]を使えばよかったんですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問