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

        

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です