如何在flash AS2中按属性名称/值查找特定的XML数据?

时间:2012-03-31 17:35:18

标签: flash xml-parsing actionscript-2

给出以下XML代码:

 <set name="thumbsBooks">
     <set name="pdf">
         <thumb>Data I want to access</thumb>
         <thumb>Data I want to access</thumb>
     </set>
     <set name="printed">
         <thumb>Data I don't want to access</thumb>
         <thumb>Data I don't want to access</thumb>
     </set>
 <set>

我希望能够使用父标记的“name”属性值作为选择器来获取“thumb”标记中包含的数据,就像你在jQuery中所做的那样:$('set [name =“ PDF“] ')找到(' 拇指');

Action Script 2中是否有这样的方法(不能使用AS3)?

2 个答案:

答案 0 :(得分:0)

刚才意识到我已将您的父标记更改为设置。

var myXML:XML = new XML(
<sets name="thumbsBooks">
     <set name="pdf">
         <thumb>Data I want to access</thumb>
         <thumb>Data I want to access</thumb>
     </set>
     <set name="printed">
         <thumb>Data I don't want to access</thumb>
         <thumb>Data I don't want to access</thumb>
     </set>
 </sets>);



for each ( var mySet:XML in myXML.set ) {

      if( mySet.@name == "pdf" ) {
         // do your stuff
      }

}

答案 1 :(得分:0)

AS2曾经有一个XPath实现,甚至两个iirc。它们都超出了任何可以想象的原因,所以我并不是真的建议你使用它们,但它可以非常简单地解决这个和类似的问题。

http://osflash.org/xpath4as2这是我能找到的东西。在mx。*包中也有一些东西,但它具有灾难性的质量......

如果您仅限于播放器版本而非特定语言版本,我建议您先看看Haxe。它有一些很好的[er] API用于处理XML,然后是AS2中的常规DOM API。

我曾经有一个XML包装类来减少与XML相关的操作的冗长,但是我这么多年没碰到过AS2,我觉得这个类现在已经不可逆转了......但是,如果你的例子碰巧是现实生活中的例子 - 为什么不直接使用DOM?对我来说似乎没什么用,除非你的项目中确实有过多的XML处理......