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

使用这样的动态对象:

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 回答
1
xmlData.recordSet.Austria;

就是这样......如果它不是一个词:

xmlData.recordSet["Czech Republic"];
于 2013-01-15T11:11:05.573 回答
0

感谢您的答复。我离开办公桌一个小时。我只需要隔离国家名称,例如奥地利。在某些情况下,这将是两个词。'在引号之间,我的意思是塞浦路斯和捷克共和国

        <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>

好,谢谢。我想虽然我需要知道 * 通用术语 * 是什么,在这种情况下是各个国家的名称。

        <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

据我了解,bar 与国家及其数据相关联。因此,您可以使用适当的数据变量创建 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 回答