您可以使用这样的递归函数,假设您的XML在变量myxml中。这样做,您就不会被绑定到元素的名称(即祖父母、父母、子女),也不会受到级别数的限制(即,您可以添加
<pet>
节点到每个
<child>
节点)
public function removeElements( avXml:XML, avAttributeName:String, avCondition:String) {
var lvAttributeValue:String;
var lvXml:XML;
var lvXmlList:XMLList = new XMLList();
for each( lvXml in avXml.children() ) {
lvAttributeValue = lvXml.attribute( avAttributeName );
if( lvAttributeValue == avCondition )
lvXmlList += lvXml;
avXml.setChildren( lvXmlList );
}
for each( var lvXmlChild:XML in avXml.children() ) {
removeElements(lvXmlChild,avAttributeName,avCondition);
}
}
removeElements(myXML, "hidden", "false");
trace(myXML.toXMLString());
<root hidden="false">
<grandParent GPid="1" hidden="false">
<parent Pid="1" hidden="false">
<child Cid="1" hidden="false"/>
</parent>
<parent Pid="2" hidden="false">
<child Cid="3" hidden="false"/>
<child Cid="4" hidden="false"/>
</parent>
</grandParent>
<grandParent GPid="2" hidden="false">
<parent Pid="3" hidden="false"/>
</grandParent>
</root>