AS3按子值从XML中删除子节点

AlB*_*die 5 xml apache-flex actionscript-3

我有一个XML结构如下;

 <items>
    <item>5</item>
    <item>3006</item>
    <item>25</item>
    <item>458</item>
    <item>15</item>
    <item>78</item>
 </items>
Run Code Online (Sandbox Code Playgroud)

如何用价值458删除的项目只是为了澄清这一点,我不知道该项目的索引,所以只是要求删除项目[指数]将不会在这里做.我必须按值删除.

任何提示?

Adr*_*scu 7

这应该解决它.顺便说一下,这将删除名称为"item"且值为458的所有直接孩子.

delete xml.(item == "458");
Run Code Online (Sandbox Code Playgroud)

要递归删除名称为"item"且值为458的所有子项和子项,请使用:

delete xml..(item == "458");
Run Code Online (Sandbox Code Playgroud)


Pat*_*ick 4

使用 e4x 过滤以及在过滤器内使用函数的可能性,您可以删除所需的节点:

  • xml.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());
Run Code Online (Sandbox Code Playgroud)