【问题标题】:how do I manipulate elements inside a xml in action script?如何在动作脚本中操作 xml 中的元素?
【发布时间】:2011-03-18 03:01:47
【问题描述】:

flex,actionscript 中有哪些内置函数可用于在 xml 变量中查找具有特定名称的节点,哪些函数可以帮助我操作它? SQL 中的 Xquery 之类的东西!每次我想操作 xml 变量时,我都不想使用 for 循环。例如,如果我想在这个 xml 中“剪切”节点并向它添加另一个属性,以编程方式命名为启用。或者我怎样才能找到“查找下一个”节点并将其删除?

                 <menuitem label="Edit">
                    <m label="Cut"/>
                    <m label="Copy"/>
                    <m label="Paste"/>
                    <m type="separator"/>
                    <m label="Find"/>
                    <m label="Find Next"/>
                </menuitem>

谢谢大家。

【问题讨论】:

    标签: xml apache-flex actionscript-3


    【解决方案1】:

    Actionscript 支持e4x。另外,请阅读XML class

    【讨论】:

      【解决方案2】:

      1) 要找到“剪切”节点:

      有一种简单的方法可以找到“剪切”节点,但它需要您删除 &lt;m type="separator" /&gt;,因为它会在此代码中引发错误。简单地找到它:

      var cut:XMLList = xml.m.(@label == "Cut");
      

      如果您无法删除“分隔符”节点,则必须循环查找。

      一旦你有了它,然后添加一个新属性,它很简单:

      cut.@someOther = true; // adds the attribute "someOther"
      

      2) 删除“查找下一个”节点

      在 as3 中删除 XML 节点有点尴尬。您可以尝试多种方法,但最终总会遇到一个错误或另一个错误。请参阅http://bottomupflash.wordpress.com/2008/03/26/deleting-xml-nodes-harder-than-it-looks/ 了解更多信息。

      我能想到的唯一可以删除“查找下一个”节点的代码是:

      var i:int = 0;
      for each( var x:XML in xml.m )
      {
          if ( x.@label == "Find Next" )
              delete xml.m[i];
          i++;
      }
      

      基本上,我们循环遍历结构,找到“查找下一个”节点的索引,然后使用子选择器删除它。

      【讨论】:

      • 感谢 divillysausages。这是一个很大的帮助。我会尝试这些建议,看看它们是否可以正常工作(我相信他们应该这样做):-)
      猜你喜欢
      • 2014-12-02
      • 1970-01-01
      • 2013-02-13
      • 1970-01-01
      • 2021-05-17
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多