kagamihogeの日記

kagamihogeの日記です。

Flex の XML クラスはちょっとでもおかしな XML ドキュメントは例外出す

当然といえば当然な話なのだけど。文法おかしい XML 食わせて例外出るから何事かと思って気付けませんでした。

まずは XML ファイルをロードするコードはこんな感じ。

var myReq:URLRequest = new URLRequest();
myReq.url = "file:///C:/a.html";
var urlLoader:URLLoader = new URLLoader(myReq);
urlLoader.addEventListener(Event.COMPLETE,
function(event:Event):void {
    try {
        var responseXML:XML = new XML(event.target.data);
        Alert.show(event.target.data);
    } catch (t:TypeError) {
        Alert.show(t.toString());
    }
});

で、こんな XML(というか HTML だけど)を食わせてみる。

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Refresh" >
</head>
</html>

よくよく見るとわかるんですが meta タグが閉じられてません。具体的に言うと .../> で終わってません。実行すると TypeError: Error #1085 ってエラーが出ます。エラー番号だけ出されても何のこっちゃわかりませんね。

ブラウザは HTML が多少間違ってようが文法がおかしかろうが、空気読んでテキトーに処理してくれるんですよね。それが常態化してるんでなかなかこのことに気付けませんでした。

テキトーな HTML を XML クラスに読み込んで E4X でラクラクアクセスじゃー、って目論んでたんだけど……野望が潰えてしまった。