[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")
}