[swift4] XMLの最初の行が改行になっていてもNSXMLParserでParseするには
XMLを連想配列にParseするにはNSXMLParserで実行可能だが、読み込んだXMLに最初の行が改行になっている場合は、正しく読み込んでくれない。
XML出力側でなんとか改行が入らないようにがんばったが、コードが多数のため断念。
なんとかswift側で処理できないか検討した結果、NSXMLParserで読み込んだNSdataを一度、文字列に戻し、Trimで不要な部分を消して、もう一度NSdataにするとうまくParseしてくれるようになった
コードは以下の通り
func (datas:NSData)-> NSData{ if let str = NSString(data:datas as Data, encoding:String.Encoding.utf8.rawValue) { let str2 = str.trimmingCharacters(in: NSCharacterSet.whitespacesAndNewlines) return str2.data(using: String.Encoding.utf8)! as NSData } return datas }
関数の使い所は以下の通り
let feedUrl : NSURL = NSURL(string:"XMLのURL")! var datas = NSData(contentsOf: feedUrl as URL) datas = xmlSpaceRemove(datas:datas!) //余計な改行等を削除 let parser = XMLParser(data: datas! as Data) if parser != nil { // XMLParserDelegateをセット parser.delegate = self; parser.parse() } else { // パースに失敗した時 print("failed to parse XML") }