如何在AS3中删除一个XML节点?

riadevID: 

如果我们在AS3中声明了一个XML片段,并且想在运行时删除其中的一个或多个节点,该怎么做呢?答案是,使用Delete关键字。

比如有如下的XML片段:

  1. <root>
  2. <child label="one" />
  3. <child label="two" />
  4. <child label="three" />
  5. <nodeToDelete label="four" />
  6. <child label="five" />
  7. <nodeToDelete label="six">
  8. <child label="seven" />
  9. <child label="eight" />
  10. </nodeToDelete>
  11. <child label="nine" />
  12. </root>

如果我要删除其中的nodeToDelete这个节点,那么我就可以这样写:delete someXML.nodeToDelete。同样注意,使用Delete不止可以删除一个节点,也可以删除一组节点(这些节点应该包含在一个XMLList对象里面),比如我要删除所有的label是“two”的节点,可以这样写:delete someXML.child.(@label=='two')[0]。

完整的示例代码:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- <a href="http://blog.flexexamples.com/2009/07/23/deleting-nodes-from-an-xml-object-in-flex/" title="http://blog.flexexamples.com/2009/07/23/deleting-nodes-from-an-xml-object-in-flex/">http://blog.flexexamples.com/2009/07/23/deleting-nodes-from-an-xml-objec...</a> -->
  3. <mx:Application name="XML_delete_test"
  4. xmlns:mx="http://www.adobe.com/2006/mxml"
  5. layout="vertical"
  6. verticalAlign="middle"
  7. backgroundColor="white">
  8.  
  9. <mx:Script>
  10. <![CDATA[
  11. protected function btn1_clickHandler(evt:MouseEvent):void {
  12. delete someXML.nodeToDelete;
  13. txtArea.text = someXML.toXMLString();
  14. }
  15.  
  16. protected function btn2_clickHandler(evt:MouseEvent):void {
  17. delete someXML.child.(@label == 'two')[0];
  18. txtArea.text = someXML.toXMLString();
  19. }
  20. ]]>
  21. </mx:Script>
  22.  
  23. <mx:XML id="someXML">
  24. <root>
  25. <child label="one" />
  26. <child label="two" />
  27. <child label="three" />
  28. <nodeToDelete label="four" />
  29. <child label="five" />
  30. <nodeToDelete label="six">
  31. <child label="seven" />
  32. <child label="eight" />
  33. </nodeToDelete>
  34. <child label="nine" />
  35. </root>
  36. </mx:XML>
  37.  
  38. <mx:ApplicationControlBar dock="true">
  39. <mx:Button id="btn1"
  40. label="delete &lt;nodeToDelete&gt; nodes"
  41. click="btn1_clickHandler(event);" />
  42. <mx:Button id="btn2"
  43. label="delete &lt;child label='two'&gt; node"
  44. click="btn2_clickHandler(event);" />
  45. </mx:ApplicationControlBar>
  46.  
  47. <mx:TextArea id="txtArea"
  48. text="{someXML.toXMLString()}"
  49. width="300" height="200" />
  50.  
  51. </mx:Application>

您给予的分值: None 平均分: 9 ( 2 票)

发表新评论

  • 网页地址和电子邮件地址将会被自动转换为链接。
  • 行和段被自动切分。
  • 您可以使用下面的标签来高亮显示您的评论内容: <code>, <blockcode>. 可以使用"[foo]".旁边显示标签样式 "<foo>" PHP代码可以用这样的区块来包含<?php ... ?> or <% ... %>

更多格式化选项信息

验证区域
系统验证:请回答下面的问题