0

バックグラウンド

標準化されたラッパーを構築する必要があるコンピューターベースのトレーニングプロジェクトがあります。コースのページは XML を使用して作成されます。各ページには独自の XML ファイルがあります。たとえば、ページ 1 はすべてのコンテンツをロードし、1.xmlページ 2はロード2.xmlします。すべてのクライアントが同じというわけではないため、ページの量は常に異なります。

問題

テスト用に10個のXMLファイルを作成しましたが、私の人生では、次のことを理解できません。

  • Flashを使用して、フォルダー内のxmlファイルの量を数えます(サーバー側にアクセスできません。アクセスすると、すべてが変更されます)IOErrorEvent.IO_ERRORある種のループで使用することを考えましたが、どこに行くべきかわかりませんでした始めても
  • Flash を使用して、すべての xml ファイルからすべての情報を 1 つの配列またはベクトルにロードし、ユーザーがコースを進むにつれてページに表示します。ユーザーはコースをスキップできます。たとえば、5 ページから 20 ページまでスキップしたい場合があります。オブジェクトまたは連想配列が私のアイデアでした

Flash がファイル システムにアクセスできないことは理解していますが、xml ファイルの名前は 1.xml、2.xml、3.xml、4.xml、5.xml などになります (この命名規則は、 XML ファイルはページ番号に直接関連付けられます) これを行う方法があるはずです。私の考えは、各ファイルを試してロードするある種のループを作成することでした。ファイルが見つからないためにエラーがスローされると、ループから抜け出します。以下の私の作業ファイルを視覚的に見てください。

現在の作業ファイル

私が作成して作業を開始したファイルには、これにアプローチする方法さえわからないため、ほとんど情報がありません。しかし、ここに私が持っているものがあります:

xml ファイル (クライアントが必要とするものは 5 つか 100 か、それ以外でも構いませんが、それらはすべて同じ形式になります) (また、どのタイプのデータベースにもアクセスできないので、XML ファイルが最良の選択肢のようです)

<?xml version="1.0" encoding="iso-8859-1"?>
<content>
    <title>My First Page</title>
    <body>This is the body of my new page I just built using XML</body>
    <img>graphic.jpg</img>
</content>

XmlClass.as ** コードについては以下を参照してください。更新しました **

私が言ったように、これは出発点です。解決しなければならないことが山ほどありますが、私が向かっている道が正しいものであることを確認したいと思います;) この xml のアイデアがこれにアプローチするための最良の方法であるかどうかはわかりません. クライアントが独自に xml ファイルを作成して維持する場合、作業負荷の一部が軽減されると思いました。

ありがとう!

編集

私の回答から判断すると、私の質問はよく書かれていませんでした。これは、私が上記よりも説明しやすいコメントを付けて作業している XmlClass.as ファイルです。_loaderArrayコードで、xml ファイルへの各リンクをロードするために for ループで使用できるを作成するメソッドを作成していることがわかります。

私がやろうとしているのは、x 量の xml ファイルを取り、すべての xml ファイルを 1 か所に配置できるようにする配列または何かを作成することだけです。

XmlClass.as

package
{
import flash.display.*;
import flash.xml.*;
import flash.events.*;
import flash.net.*;

public class XmlClass extends XMLDocument
{       
    private var _xml:XML;       
    private var _loader:URLLoader;
    private var _request:URLRequest;
    private var _loaderArray:Array; /* this is to store my paths to each xml file */
    private var _xmlArray:Array; /* this is where I want to store all the information in all the xml files */
    private var _fileError:Boolean; /* this tells me that I have hit a 404 trying to load one of the files */

    public function XmlClass():void
    {
        BuildLoaderArray();
        BuildXmlArray();
    }
    /* build the xml array so I can have one place that stores each of the xml files content */
    private function BuildXmlArray():void
    {
        _loader  = new URLLoader();
        for(var i=1;i<_loaderArray.length;i++)
        {
            /* check to see if we have a 404 error and stop the loop */
            if(_fileError){break;}
            _request = new URLRequest(_loaderArray[i]);/* load each of the xml paths to load into the array */
            _loader.addEventListener(Event.COMPLETE,ProcessXML);
            _loader.addEventListener(IOErrorEvent.IO_ERROR,XMLioErrorHandler); 
            _loader.load(_request);
        }
        trace(_xmlArray);/* show me the newly created xml array that has all the files information */
    }
    /* build all the links to the xml files for the loader */
    private function BuildLoaderArray():void
    {
        _loaderArray = new Array();
        for(var i=1;i<201;i++)
        {
            _loaderArray.push("../xml/"+i+".xml");
        }
    }
    private function ProcessXML(e:Event):void
    {
        _xmlArray = new Array();
        _xml = new XML(e.target.data);
        _xmlArray.push(_xml);
    }       
    private function XMLioErrorHandler(e:IOErrorEvent):void
    {
        _fileError = true;
        trace("Loading Error")
    }
}
}   
4

1 に答える 1

0

これは、ロードされる複数の xml ファイルを管理する適切な方法ではありません。最初に、データの一部としてロードされる xml ファイルのリストを含む構成 xml ファイルを 1 つ作成する必要があります。最初に構成 xml ファイルをロードし、次にコンテンツ xml ファイルを開始する必要があります。 xml ファイルを構成します。

xml ファイル名とカウントも柔軟に構成できます。どんな場合でも機能し、ランタイムを与える必要はありません。あなた/あなたのクライアントが変更したいときはいつでも、構成xmlファイルを変更するだけです. 終わった。

于 2012-05-03T10:38:37.403 に答える