0

ヨーロッパのいくつかの国に関するデータを含む xml ファイル (以下を編集) があります。

xmlData = <dataSet>
 <recordSet>
    <rd id="Austria">12.3,12.6,12.0,12.4,12.0,12.1,12.6</rd>
    <rd id="Belgium">14.8,14.7,15.2,14.7,14.6,14.6,15.3</rd>
    <rd id="Bulgaria">14.0,18.4,22.0,21.4,21.8,20.7,22.3</rd>
    <rd id="Cyprus">16.1,15.6,15.5,15.7,15.3,15.3,14.5</rd>
    <rd id="Czech Republic">10.4,9.9,9.6,9.0,8.6,9.0,9.8</rd>
    ... 
 </recordSet>
 </dataSet>

国名を変数として分離できるようにする必要があるため、後で「国 = オーストリアの場合はこれを実行してください」と言うことができます。

どうすればいいですか?

ありがとうございました、

ブルース

4

4 に答える 4

1
xmlData.recordSet.Austria;

それだけです...それが一言ではない場合:

xmlData.recordSet["Czech Republic"];
于 2013-01-15T11:11:05.573 に答える
1

そのような動的オブジェクトを使用します。

var xmlData:XML = <dataSet>
        <recordSet>
            <rd id="Austria">12.3,12.6,12.0,12.4,12.0,12.1,12.6</rd>
            <rd id="Belgium">14.8,14.7,15.2,14.7,14.6,14.6,15.3</rd>
            <rd id="Bulgaria">14.0,18.4,22.0,21.4,21.8,20.7,22.3</rd>
            <rd id="Cyprus">16.1,15.6,15.5,15.7,15.3,15.3,14.5</rd>
            <rd id="Czech Republic">10.4,9.9,9.6,9.0,8.6,9.0,9.8</rd>
        </recordSet>
    </dataSet>

var map:Object = new Object();
for each (var countryXML:XML in xmlData.recordSet.rd)
{
    map[countryXML.@id] = countryXML.toString();
}

これで、条件を書くことができます:

if (country == "Austria")
{
    //do smth
    trace(map[country])
}
于 2013-01-15T08:50:02.113 に答える
0

御返答いただき有難うございます。私は1時間机から離れていました。オーストリアなどの国名だけを分離する必要があります。場合によっては、これは2つの単語になります。引用符の間で、私は以下のようにキプロスとチェコ共和国を意味しました

        <rd id="Cyprus">16.1,15.6,15.5,15.7,15.3,15.3,14.5</rd>
        <rd id="Czech Republic">10.4,9.9,9.6,9.0,8.6,9.0,9.8</rd>

OK-ありがとう。私が必要としているのは、ビットの*総称*が何であるかを知ることだと思いますが、この場合はさまざまな国の名前です。

        <rd id="WhatAmICalled">16.1,15.6,15.5,15.7,15.3,15.3,14.5</rd>

それで私はこうして尋問することができます:

        if  (WhatAmICalled == Austria) 
            {eat a strudel}
        else ...
            {   }

言い換えれば、要素「WhatAmICalled」は何と呼ばれ、どのようにそれを分離するのですか?

目的は、ある特定の国の棒(アニメーションの棒グラフ)を選択し、それに特定の色を適用し、他のすべての国の棒に異なる色を適用することです。

単一のデータセットのみを扱っている場合、このソリューションがあります。

    var myData:Number = dataArray[(numBars-1)-i][currentIndex];
    var myBar:Sprite = new Sprite();
        myBar.name = "bar"+i;
        if (myBar.name == "bar10")

...しかし残念ながら、この場合、私は複数のデータセットを使用しており、国は異なる順序で表示されるため、myBar.nameルートは機能しません。

于 2013-01-15T11:05:46.627 に答える
0

私が理解したように、バーは国とそのデータに関連付けられています。したがって、データに適切な変数を使用して、Sprite を拡張するクラス Bar を作成できます。

public class Bar extends Sprite
{
    public var data:XML;

    public function Bar ()
    {
        super();             
    }
}

バーを初期化するときは、次のようなデータを設定します。

for (var i:int=0; i<xmlData.recordSet.rd.length(); i++)
{
    var bar:Bar = new Bar();
    bar.data = xmlData.recordSet.rd[i];        
}

これで、すべてのバーがそのデータを認識します。条件を書くことができます:

if (myBar.data.@id == "Austria")
    doSomething();

うまくいけば、それは役に立ちます。

于 2013-01-15T19:49:56.947 に答える