E4X的使用
xml文档如下:
<catalog>
<category name="vegetables">
<product name="lettuce" cost="1.95">
<unit>bag</unit>
<desc>Cleaned and bagged</desc>
</product>
<product name="carrots" cost="2.95">
<unit>pound</unit>
<desc>Baby carrots, cleaned and peeled</desc>
</product>
</category>
<category name="fruit">
<product name="apples" cost="1.95">
<unit>each</unit>
<desc>Sweet Fuji</desc>
</product>
<berries>
<product name="raspberries" cost="3.95">
<unit>pint</unit>
<desc>Firm and fresh</desc>
</product>
<product name="strawberries" cost="2.95">
<unit>pint</unit>
<desc>Deep red and juicy</desc>
</product>
</berries>
</category>
</catalog>
1.使用E4X表达式,不需要在语句中包含根节点
2.使用点 (.) 操作符指向子节点。
category.product 表示只筛选category节点下的直接子节点是product。则上面的category下面有berries节点然后再是product节点的就不会被筛选出来。
category.product.unit 与上面类似,不过多加一个点操作符,只筛选category下直接子节点product下面的unit直接子节点。
所以使用点操作符筛选出来的是直接子节点,需要注意。
3.使用数组表示法
category.product[1]筛选出category下第二个product直接子节点。(由于E4X的列表索引从零开始)
下面使用引号的地方经过测试也可以不使用引号。
4.圆括号运算符(谓词过滤【predicate filtering】技术),将所希望的条件放置在圆括号中称为一个过滤器限制返回的数据。(需要注意的是使用双等号)
(1)category.product.(unit=="bag") 将返回product限制为unit节点为bag的product。
(2)在属性上添加谓词过滤,需要在括号中使用属性运算符(@)
category.product.(@cost=="1.95") 可以返回多个符合条件的节点
(3)如何使用多次谓词过滤
category.product.(@cost=="1.95").(unit=="bag")
5.后代存取器(descendant accessor) 表示为两个点(..) 该运算符能找到xml对象的后代节点,无论xml结构有多复杂都能获取到匹配的节点。
(1)category..product 就能返回category的所有product节点。不管该节点是否是直接子节点还是其他节点都可以找到。
(2)后代存取器配合谓词过滤
category..product.(@cost>2)
上面只是E4X的一小部分。
阅读(1125) | 评论(0) | 转发(0) |