2011-09-11 83 views
1

我有一些问题得到一个Flash应用程序(在AS3中)在xml中搜索特定的元素值。我有以下的XML文件。使用flash来搜索XML元素值。 (一个简单的搜索功能)

<clientlist> 
    <pessoa> 
    <id>0140</id> 
    <nome>Maria Manuela</nome> 
    <email>[email protected]</email> 
    <contacto>969876543</contacto> 
    </pessoa> 
    <pessoa> 
    <id>0141</id> 
    <nome>Maria Jose</nome> 
    <email/> 
    <contacto>961234567</contacto> 
    </pessoa> 
    <pessoa> 
<clientlist> 

我有一个“搜索”领域,其中,按说,我会键入一个名称和将得到的“佩索阿” S数组,但我有一些问题,使循环发生。

所以,想象我会寻找 “玛丽亚”,我希望得到一个:

跟踪(PessoaArray [0])=

<id>0140</id> 
<nome>Maria Manuela</nome> 
<email>[email protected]</email> 
<contacto>967060255</contacto> 

跟踪(PessoaArray [1])=

<id>0141</id> 
<nome>Maria Jose</nome> 
<email/> 
<contacto>968496127</contacto> 

任何人都可以帮我吗?我对闪存AS3并不陌生(即使我不是专业版),但它是我第一次搞乱XML文件。

谢谢。

Marco Roberto。

回答

3

简短的回答:xmlData.*.(nome == $name))

长答案...

在FLA用文本框_tf和按钮_btn

import flash.events.MouseEvent; 

var $data:XML = <clientlist> 
    <pessoa> 
    <id>0140</id> 
    <nome>Maria Manuela</nome> 
    <email>[email protected]</email> 
    <contacto>969876543</contacto> 
    </pessoa> 
    <pessoa> 
    <id>0141</id> 
    <nome>Maria Jose</nome> 
    <email/> 
    <contacto>961234567</contacto> 
    </pessoa> 
</clientlist>; 

_btn.addEventListener(MouseEvent.CLICK,onClick); 

function onClick($e:MouseEvent):void{ 
    trace($data.*.(nome == _tf.text)) 

} 
+0

测试这我知道有些人喜欢用美元签名作为as3应用程序中函数参数的前缀,但$ data? – Taurayi

+0

呀,'$ data'有点多。我已经在函数内的var名称前面使用了$,使得我很容易找出变量的范围。但这是我扔在一起的一个简单例子,所以我没有太注意它。也许有足够的降价,我会解决它。 – Daniel

+0

'$ prefix'是可原谅的,'_prefix'是丑陋但常见的,但只要人们避免使用可怕的双眼下划线:'__killMe',一切都会好起来。我的天啊。这是最糟糕的。 – TheDarkIn1978