AS3按子值从XML中删除子节点
我得到了一个结构如下的XMLAS3按子值从XML中删除子节点,xml,actionscript-3,apache-flex,Xml,Actionscript 3,Apache Flex,我得到了一个结构如下的XML <items> <item>5</item> <item>3006</item> <item>25</item> <item>458</item> <item>15</item> <item>78</item> </items> 5. 3006
<items>
<item>5</item>
<item>3006</item>
<item>25</item>
<item>458</item>
<item>15</item>
<item>78</item>
</items>
5.
3006
25
458
15
78
如何删除值为458的项。为了澄清这一点,我不知道该项的索引,因此简单地调用delete items[index]在这里是不行的。
我必须按值删除
有任何提示吗?使用e4x筛选和在筛选器内使用函数的可能性您可以删除所需的节点:
- item.(text()==value)将为您提供要查找的节点
- valueOf()将为您提供正在筛选的当前节点
- 删除将删除该节点
var xml:XML=<items>
<item>5</item>
<item>3006</item>
<item>25</item>
<item>458</item>
<item>15</item>
<item>78</item>
</items>;
function deleteValue(xml:XML, value:String):void{
xml.item.((text()==value) && (delete parent().children()[valueOf().childIndex()]));
}
deleteValue(xml, "458");
trace(xml.toXMLString());
var-xml:xml=
5.
3006
25
458
15
78
;
函数deleteValue(xml:xml,value:String):void{
xml.item.((text()==value)&&(delete parent().children()[valueOf().childIndex()]);
}
deleteValue(xml,“458”);
跟踪(xml.toXMLString());
这应该可以解决这个问题。顺便说一句,这将删除所有名为“item”且值为458的直接儿童
delete xml.(item == "458");
要递归删除名称为“item”且值为458的所有子级和子级,请使用:
delete xml..(item == "458");
作品但是让我想哭。为了可读性,我会坚持使用For..loop。鉴于我访问初始XML的子组件,我的源XML将是一个XMLList(很抱歉,我刚刚意识到),因此我需要先将XMLList转换为XML,这会给我带来一些问题。这对我不起作用。我得到一个异常,说delete在XMLList上不起作用。我必须做的是:删除handXML.tile。(@type==boostType)[0]@DoomGoober这个答案基于这个特定的示例,如果您有一个不同的xml结构,它肯定不会工作。请看问题中提供的示例。你确定你没有只删除第一组标题吗?我的评论不清楚。但是,删除xml(item==“458”);也不行!xml。(item==“458”)计算为一个XMLList。delete对XMLList不起作用,只对XML本身起作用。因此,实际获取XML对象的唯一方法是使用索引器。删除xml。(项==“458”)[0];