2011-03-17 89 views
0

什么是flex中可用的内置函数,我可以使用actionscript在xml变量中查找具有特定名称的节点,以及哪些函数可以帮助我操作它?像SQL中的Xquery一样!每次我想操作一个xml变量时,我都不想使用for循环。例如,如果我想在此xml中“剪切”节点,并在语法上为其添加另一个名为enabled的属性。或者我怎么能找到“查找下一个”节点并删除它?如何在操作脚本中操作xml中的元素?

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

谢谢你们。

回答

0

1)找到“腰斩”节点:

这里有一个简单的方法来找到“腰斩”的节点,但它会要求你删除<m type="separator" />,因为它会抛出一个错误与此码。简单地找到它:

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

如果无法删除“分隔符”节点,那么你就必须通过找到它循环。

一旦你拥有了它,然后添加一个新的属性,它只是:

[email protected] = true; // adds the attribute "someOther" 

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

删除XML节点在AS3有点尴尬。你可以尝试多种方式,但总是会有一个错误或另一个错误。有关更多信息,请参阅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 ([email protected] == "Find Next") 
     delete xml.m[i]; 
    i++; 
} 

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

+0

谢谢divillysausages。这是一个很好的帮助。我会尝试这些建议,看看他们是否工作正常(我相信他们应该):-) – Tintin 2011-03-17 20:10:17