SwiftでXMLをパースする。ありがとうyahoojapan

XMLパーサーは、極論すると、これで終わる。簡単!

github.com

こんな感じ。

import SwiftyXMLParser

if let path: String = Bundle.main.path(forResource: "hoge", ofType: "txt") {
  do {
// ファイルの内容を取得する
    let content = try String(contentsOfFile: path)
// print("content: \(content)")
    let xml = try XML.parse(content)
    var i = 0
    while true {
      guard let str = xml["root", "data", i, "value"].text else { break; }
      print("\(str)")
      i += 1
    }
    print("ループ終わり")
  } catch  {
    print("ファイルの内容取得時に失敗")
  } // do
} else {
  print("指定されたファイルが見つかりません")
} // if let

真面目にやると結構大変です。XMLParser()を使うのだけれど、 要素(エレメント、属性)が1つ見つかる度に、XMLParserDelegateにあるparse(..)という名前の 関数が呼び出されて、結果を取り出して自分で使えるように加工しないといけません。 この辺りを全部やってくれるのが、上記のyahoojapanのコードです。