Chinaunix首页 | 论坛 | 博客
  • 博客访问: 84215
  • 博文数量: 22
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 221
  • 用 户 组: 普通用户
  • 注册时间: 2015-08-28 11:18
文章分类

全部博文(22)

文章存档

2021年(4)

2020年(1)

2016年(10)

2015年(7)

我的朋友

分类: Web开发

2015-09-06 10:09:35

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的一小部分。


    

阅读(1129) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~