skip to main |skip to sidebar

2007-06-10

E4X 与 XPath

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

一句就实现了。

E4XXPath都属于DOM访问。E4X随机访问(Random Access)很方便但顺序访问不能;XPath不管随机访问还是顺序访问都方便。但E4X()表达式可以包含随意的代码,这是XPath只有固定函数所不能的。所以E4XXPath是互补的。

E4X + XPath = 无敌!

没有评论: