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 = 无敌!
没有评论:
发表评论