2009-05-15 13 views
3

AS3のjsonまたはxml形式で使用できるストリーム読み取り、解析ライブラリはありますか?私は、URLStream/URLRequestを使用して、長いポーリングアプリケーションを設定しています。私はフォーマット間の選択以外のデータを制御できません。一度にフラグメントを処理できるパーサを用意したいと思います。これにより、特定の完全なフラグメントが利用可能になったときにカスタムイベントをトリガすることができます。思考?これを処理する現在のAIRアプリケーションは何ですか?AS3/Flex/Adob​​e AIRアプリケーションのストリーミングパーサー(JSON/XML)

サンプルAPI:

var decoder:StreamingJSONDecoder = new StreamingJSONDecoder(); 
decoder.attachEvent("onobjectavailable", read_object); 

while (urlStream.bytesAvailable) 
{ 
    decoder.readBytes(get_bytes(urlStream)); 
} 

答えて

1

うん。

はAS3 Corelibではを見てください:http://code.google.com/p/as3corelib/

それは、Adobeライブラリです。 labs.adobe.comの詳細があります。

RSS形式のパーサーに問題がありましたが、それ以外はすべてうまくいっていました。

Goodluck!

+0

私が間違っている場合は私を修正しますが、as3corelibが提供するAPIがストリーミングをサポートしているとは思いません。私は元の質問にサンプルコードを追加して明確にしました。 –

+0

申し訳ありません...質問を正しく読まなかった。私が読んだas3 JSONライブラリの最新の詳細は、http://www.darronschall.com/weblog/2008/12/as3-json-library-now-a-little-less-strict.cfmです。しかし、あまり助けてくれることはありません:( –

0

URLStreamインスタンスを使用して、リモートネットワークから徐々にデータをダウンロードし、十分なデータが利用可能になったらJSON結果をデコードすることができます。

この(テストしていない、ちょうどあなたのアイデアを与える)ような何か:

var stream:URLStream = new URLStream(); 
stream.addEventListener(ProgressEvent.PROGRESS, handleProgress); 
stream.load(new URLRequest("/path/to/data")); 

function handleProgress(event:ProgressEvent):void 
{ 
    // Attempt to read as much from the stream as we can at this point in time 
    while (stream.bytesAvailable) 
    { 
     // Look for a JSONParseError if the JSON is not complete or not 
     // encoded correctly. 
     // Look for an EOFError is we can't read a UTF string completely 
     // from the stream. 
     try 
     { 
      var result:* = JSON.decode(stream.readUTF()); 
      // If we're here, we were able to read at least one decoded JSON object 
      // while handling this progress event 
     } 
     catch (e:Error) 
     { 
      // Can't read, abort the while loop and try again next time we 
      // get download progress. 
      break; 
     } 
    } 
} 
1

現在のAIRのリリース(V2.5)はJSON.stringifyを経由して、ネイティブJSONをサポートしている新しいWebKitのバンドルに( )とJSON.parse()です。

関連する問題