我有一个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>
我需要能够将国家/地区名称隔离为变量,以便稍后我说 '如果国家=奥地利,就这样做。'
我该如何解决这个问题?
谢谢,
布鲁斯
答案 0 :(得分: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])
}
答案 1 :(得分:1)
xmlData.recordSet.Austria;
就是这样...... 如果它不是一个单词:
xmlData.recordSet["Czech Republic"];
答案 2 :(得分: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路由不起作用。
答案 3 :(得分: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();
希望,这会有所帮助。