E4X没有传说的那么强,E4X不过是XPath的子集罢了。
Xpath没有传说的那么复杂,不过是程序不直接支持罢了。
源数据:
<?xml version="1.0" encoding="utf-8"?> <node label="root"> <node label="myDoc"> <node label="images"> <node label="1.jpg" /> <node label="2.jpg" /> </node> <node label="3.jpg" /> </node> </node>
想要得到1.jpg的地址
E4X:
xml..node.(@label=="i.jpg")
XPath:
xml//node[@label="1.jpg"]
比较两个,差别并不大。只是一个是"."一个是"/";只是一个是"()"一个是"[]";只是一个是"=="一个是"="罢了。
但要得到1.jpg的下一个节点(<node label="2.jpg" />)的地址
E4X:无法直接得到。
XPath:
xml//node[@label="1.jpg"]/following-sibling::node
一句就实现了。
E4X与XPath都属于DOM访问。E4X随机访问(Random Access)很方便但顺序访问不能;XPath不管随机访问还是顺序访问都方便。但E4X的()表达式可以包含随意的代码,这是XPath只有固定函数所不能的。所以E4X与XPath是互补的。
E4X + XPath = 无敌!
![[Google]](http://www.google.com/logos/Logo_25wht.gif)
![[Synchronous Space]](http://weihe924stephen.googlepages.com/syncspace-banner.jpg)
![[Creative Commons License]](http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png)
![[Add to Google]](http://buttons.googlesyndication.com/fusion/add.gif)
![[Aggregated by MXNA]](http://weblogs.macromedia.com/mxna/images/mxna88x31.gif)
![[Flex.org]](http://www.flex.org/images/flexorg.gif)
![Validate my Atom 1.0 feed [Valid Atom 1.0]](http://validator.w3.org/feed/images/valid-atom.png)
![Validate my RSS feed [Valid RSS]](http://resource.googlecode.com/files/valid-rss.png)
![[I heart FeedBurner]](http://www.feedburner.com/fb/images/pub/i_heart_fb.gif)
没有评论:
发表评论