E4X教程[3] - 后代与筛选器

访问后代节点

很多时候,你感兴趣的节点往往不是 XML 根节点的子节点,而是嵌套在多层下的后代节点。你可以使用 .. 操作符访问任意深度的节点,或者使用 descendants 性质。例如:

var element = <pets>
                <dogs>
                  <fido color="red"/>
          <spike color="blue"/>
        </dogs>
              </pets>;
element..fido.@color = "green";
element..spike.@color = "purple";

两只宠物狗的颜色都做了改变。

点(.)操作符的所有规则都适用于 .. 操作符。那就是说,如果有多个请求的类型,就会返回一个 XML 后代的列表。星号(*)选择器会返回 XML 列表的所有后代。

过滤器

在很多情况下,尤其是用 * 选择器时,你并不想要处理 . 或 .. 操作符返回的所有节点。为了只处理其中特定的子集,可以将筛选条件放到 . 操作符后面的圆括号里。

var element = <dogs>
                <fido color="brown"/>
                <spike color="black"/>
                <killer color="brown"/>
              </dogs>;
var list = element.*.(@color == "brown");

本来,element.* 返回一个包含三只狗的列表。但其中只有 fido 和 killer 的颜色是褐色的。因此,该过来条件创建了一个只包含 fido 和 killer 的列表。

redraimentE4X