我可以使用flex,actionscript中的内置函数来查找xml变量中具有特定名称的节点以及哪些函数可以帮助我操作它?像SQL中的Xquery!每次我想操纵一个xml变量时,我都不想使用for循环。例如,如果我想在此xml中“剪切”节点并为其添加另一个名为enabled的语言。或者如何找到“查找下一个”节点并将其删除?
<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)
答案 1 :(得分:0)
1)找到“剪切”节点:
有一种简单的方法可以找到“剪切”节点,但它需要您删除<m type="separator" />
,因为它会在此代码中引发错误。简单地找到它:
var cut:XMLList = xml.m.(@label == "Cut");
如果你无法删除“seperator”节点,那么你必须循环才能找到它。
一旦你拥有它,然后添加一个新属性,它只是:
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++;
}
基本上,我们循环遍历结构,找到“Find Next”节点的索引,然后我们使用子选择器删除它。