XmlPullParserException: PI must not start with xml .. でパースできない(BOM付きxmlの扱い)
utf-8のxml、bom付きのファイルを解析する必要があったが、
そのままPullParserに入れると落ちてしまった。
ファイルそのものの保存形式を変えたいと真っ先に思ったが、
諸々の都合でそれは出来ず…
調べると、やはりbomを何とかしないといけないようで、
HttpGetで取得したbyte array(下記の変数result)の値を、
String xmlStr = "";
if(result[0] == (byte)0xEF && result[1] == (byte)0xBB && result[2] == (byte)0xBF){
//UTF-8 BOM付きであれば頭削除
xmlStr = new String(result, 3, result.length - 3 , "UTF-8");
}else{
xmlStr = new String(result, "UTF-8");
}
というように、頭にbomがあればトリムして文字列化した物を
PullParserに渡すようにしたら、無事エラーは起きなくなった。
参考:http://www.geekality.net/2011/05/23/java-how-to-deal-with-the-bom-in-a-unicode-inputstream/