- 2010年1月 5日 15:45
- Tips
as3で読み込むXMLは、Shift-JISにしないで、UTF-8にしたほうがいい。
おなじみ、System.useCodePage=trueで読み込めるのですが、
AS3だと、読み込むと、謎のゴミが文末にできて、(しかもできたりできなかったりする)
それがパーサエラーになる。
特に、複数読み込むと、本当ひどいありさま。
ググっても、あまりよい文献が出てこなかったので、まとめ。
●SimpleXMLLoaderクラス
いきなり金字塔かと思いきや、ぼくの場合、古臭いXMLDocumentクラスを使っていたので、
読み込んだXMLをストリングに直して、またXMLDocumntをしてパースしなおすときに、
エラーこいてしまった。
ちなみにXMLDocumentクラスも使わない方がいい(使ってるのオレだけか)
●XMLデータの末尾にゴミがついた時の対処法
これはすごく強引で、最後の閉じタグを検索して、そこの間だけを抜き取ってXML化する、というやりかた。
シンプルだけにわかりやすい。
で、さらにぼくの場合、複数のXMLを読み込んだ中身が混在しているといった事態が沖田総司。
XML1 <tree> --------あーたらこーたら-------------------------------どーたら-----</tree>
XML2 <tree> --------あーたらこーたら-----------------</tree>
XML2を見ると、</tree>が2個入っているんである。つまり、
XML2 <tree> --------あーたらこーたら-----------------</tree>----どーたら-----</tree>
となっていた。
てことで、
System.useCodePage = true;
var urlLoader:URLLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, loadCompleteHandler);
urlLoader.load(new URLRequest("ファイル名"));
var endTag:String = "一番最後の閉じタグ";
var xml:XML;
function loadCompleteHandler(event:Event):void {
var data:String = event.target.data;
xml = new XML(data.substring( 0, data.IndexOf(endTag) + endTag.length));
}
こうした。
これも対症療法だから、もうShift-JISはやめたほうがいいみたいですね。
おなじみ、System.useCodePage=trueで読み込めるのですが、
AS3だと、読み込むと、謎のゴミが文末にできて、(しかもできたりできなかったりする)
それがパーサエラーになる。
特に、複数読み込むと、本当ひどいありさま。
ググっても、あまりよい文献が出てこなかったので、まとめ。
●SimpleXMLLoaderクラス
いきなり金字塔かと思いきや、ぼくの場合、古臭いXMLDocumentクラスを使っていたので、
読み込んだXMLをストリングに直して、またXMLDocumntをしてパースしなおすときに、
エラーこいてしまった。
ちなみにXMLDocumentクラスも使わない方がいい(使ってるのオレだけか)
●XMLデータの末尾にゴミがついた時の対処法
これはすごく強引で、最後の閉じタグを検索して、そこの間だけを抜き取ってXML化する、というやりかた。
シンプルだけにわかりやすい。
で、さらにぼくの場合、複数のXMLを読み込んだ中身が混在しているといった事態が沖田総司。
XML1 <tree> --------あーたらこーたら-------------------------------どーたら-----</tree>
XML2 <tree> --------あーたらこーたら-----------------</tree>
XML2を見ると、</tree>が2個入っているんである。つまり、
XML2 <tree> --------あーたらこーたら-----------------</tree>----どーたら-----</tree>
となっていた。
てことで、
System.useCodePage = true;
var urlLoader:URLLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, loadCompleteHandler);
urlLoader.load(new URLRequest("ファイル名"));
var endTag:String = "一番最後の閉じタグ";
var xml:XML;
function loadCompleteHandler(event:Event):void {
var data:String = event.target.data;
xml = new XML(data.substring( 0, data.IndexOf(endTag) + endTag.length));
}
こうした。
これも対症療法だから、もうShift-JISはやめたほうがいいみたいですね。
- Newer: わきの下に粉瘤
- Older: 井上雄彦 最後のマンガ展:大阪版
Comments:0
Trackbacks:0
- TrackBack URL for this entry
- http://www.nakamurahiroki.com/cgi-bin/mt-tb.cgi/277
- Listed below are links to weblogs that reference
- AS3でShift-JISのXMLを読み込むと、エラーになったりならなかったりする from Censorable log
Webデザインの「プロだから考えること」