1

利用可能なJSFL(Adobe Flash-extension Javascriptスクリプトファイル)にxml解析ツールがないようです:http://osflash.org/pipermail/flashextensibility_osflash.org/2006-July/000014.html

では、javascript xmlパーサーを追加する簡単でクロスプラットフォームの方法はありますか?

4

6 に答える 6

3

これは古い質問ですが、この問題の解決策も探していました(Flash CS3を使用)。ディスク上のデータファイルからXMLを解析する必要がありました。George Profenzaの提案を組み合わせて、を使用して動作させることができましたeval()。重要なのは、最初の行(xml宣言)を削除することです。

xmlData = eval( FLfile.read( xmlFile ).split( '\n' ).slice( 1 ).join( '\n' ) );

...そしてあなたは行ってもいいです!

于 2011-08-24T16:00:57.983 に答える
2
var xml = new XML(FLfile.read(file));

次に、次のように記述して、すべてのノードと属性にアクセスできます。

xml.nodeName
xml.nodeName.@attribute1
xml.nodeName.@attribute2

nodeName はノードの名前です。attribute1 は、属性の名前である必要があります。

これが役立つことを願っています。

于 2014-10-10T06:07:24.570 に答える
2

Javascript エンジンが 1.6 にアップグレードされたため、Flash CS3 以降を使用して JSFL から XML と E4X を直接使用できます。

以下は、現在の選択範囲内の要素をループして xml をトレースする簡単なスニペットです。

var doc = fl.getDocumentDOM();//get the current document ref.
var selection = doc.selection;//get the selection
var layout = <layout />;//create the root node for our xml
var elementsNum = selection.length;//store this for counting*
for(var i = 0 ; i < elementsNum ; i++){
   layout.appendChild(<element />);//add an element node
   layout.element[i].@name = selection[i].name;//setup attributes
   layout.element[i].@x = selection[i].x;
   layout.element[i].@y = selection[i].y;
}
fl.trace(layout);
于 2010-07-03T15:57:20.140 に答える
0

私にとってうまくいくのは、SwfWindow を作成することだけです。JSFL での作業は、Flash を再起動せずにファイルを変更できるので便利で高速ですが、多くの場合、ActionScript の方が強力です。

私の現在のプロジェクトは、いくつかのトリックを行います。

  1. JSFL でオブジェクトを作成し、それらを XML に変換します。オブジェクト形式から SwfWindow (パネル) に渡す文字列にシリアル化する必要があります。パネルから、XML に変換できる文字列を取得します。そうすれば、Actionscript 3.0 でやりたいことが何でもできます。

  2. XML を操作するだけの場合は、ユーザーに JSFL コードで XML ファイルのパスを入力するように求めますが、URL をパネルに直接渡し、パネルに XML を直接ロードさせるだけです。

  3. ついに。XML を保存するには、「xml.toXmlString()」を使用して XML を文字列に変換する必要がありますが、データを JSFL に渡せるように「\n」も削除する必要があります。'|' の '\n' を取り除きます。またはあなたが好きなもの。次に、文字列を JSFL に渡すと、文字列を逆シリアル化し、'|' を変更できます。'\n' に戻り、ファイルを保存します。古い「出力パネルの保存」メソッドを使用するか、新しいファイル書き込みメソッドを使用します。

それが役立つことを願っています。

于 2010-11-12T19:03:50.177 に答える
-2
function parseXML (xml) {
    try { // normal browsers
        return (new DOMParser()).parseFromString(xml, "application/xml");
    }
    catch (e) { // IE
        var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async = "false";
        xmlDoc.loadXML(xml);
        return xmlDoc;
    }
}

DOMParserMicrosoft.XMLDOM ActiveX オブジェクトの詳細を読みたいと思うかもしれません。

于 2009-09-30T20:36:25.137 に答える