xml - 使用 e4x 语法删除特定节点

标签 xml apache-flex flex4

我有这个 XML 结构:

<numb>
  <variable>
   <name>john</name>
   <age>12</age>
 </variable>
 <variable>
   <name>janet</name>
   <age>10</age>
 </variable>
 <variable>
   <name>johanna</name>
   <age>22</age>
 </variable>
 <variable>
  <name>harry</name>
  <age>24</age>
 </variable>
</numb>

如果我尝试删除名称为 johanna 的变量,我会这样做:

  delete numb.variable.(name=="johanna);

但是,我得到这个错误:

 "Error #1119: Delete operator is not supported with operand of type XMLList"

建议 numb.variable.(name=="johanna") 是一个 XMLList ..但后来我尝试了这个:

delete XML(numb.variable.(numb=="johanna"); 

但这并没有删除任何东西..

有人知道如何删除 NumPy 的 XML 中的某个变量吗?

最佳答案

您可以使用 setChildren() 检索与 johanna 具有不同name 的子节点并将它们设置为子节点方法。

例如

var xml:XML = <numb>
  <variable>
   <name>john</name>
   <age>12</age>
 </variable>
 <variable>
   <name>janet</name>
   <age>10</age>
 </variable>
 <variable>
   <name>johanna</name>
   <age>22</age>
 </variable>
 <variable>
  <name>harry</name>
  <age>24</age>
 </variable>
</numb>

xml.setChildren(xml.variable.(name != 'johanna'));
trace(xml);
/*
Outputs:
<numb>
  <variable>
    <name>john</name>
    <age>12</age>
  </variable>
  <variable>
    <name>janet</name>
    <age>10</age>
  </variable>
  <variable>
    <name>harry</name>
    <age>24</age>
  </variable>
</numb>
*/

另一种选择是遍历满足条件的每个节点,并使用childIndex()通过数组访问符号删除相应的节点。方法:

简短版:

for each (var match:XML in xml.variable.(name == 'johanna')) delete xml.variable[match.childIndex()];

更长的版本:

var xml:XML = <numb>
  <variable>
   <name>john</name>
   <age>12</age>
 </variable>
 <variable>
   <name>janet</name>
   <age>10</age>
 </variable>
 <variable>
   <name>johanna</name>
   <age>22</age>
 </variable>
 <variable>
  <name>harry</name>
  <age>24</age>
 </variable>
</numb>;

var matches:XMLList = xml.variable.(name == 'johanna');
for each (var match:XML in matches) delete xml.variable[match.childIndex()];

关于xml - 使用 e4x 语法删除特定节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6106535/

相关文章:

ios - Swift XMLMapper 解码嵌套属性

.net - 解析 XML 的不同方法

xml - 我如何在 Perl Dancer2 中使用 XML 序列化程序?

java - 重新登录 Flex 导致 Channel.Connect.Failed 错误 NetConnection.Call.Failed : HTTP: Status 500: url

ios - Flex Mobile 4.6 应用程序不会在 IOS 上创建数据库?

css - 尝试在 SWF 文件上使用 CSS top 属性,但它不起作用

xml - MinOccurs 0 和 nillable true

php - 如何在 ColumnCharts (xField ="date") 上按从 MySQL 获取的日期进行排序?

apache-flex - 重构时出现 StackOverflowError

apache-flex - 移动设备上的 Flex TextArea 和 TextInput 定位不正确