AJAX及使用E4X编写Web服务脚本(1)(2)
如果您同我们的操作完全一样,那么现在就可以尝试该操作。Rhino 1.6R1 最新的版本以及来自 Apache 的 XMLBeans 程序库都支持 E4X。使用它们非常的简单,只要获取这些包,将它们解压,然后将 js.jar 和 xbean.jar 添加到您的类路径中,就可以启动 JavaScript 处理程序了。
java -cp js.jar;xbean.jar
org.mozilla.javascript.tools.shell.Main
您现在可以尝试以下实例。您可以将它们从该处剪切并复制,或者将它们包含在 examples1.js 文件中,该文件位于 zip 文件(ws-ajax1code.zip)中,您可以通过点击本文顶部或者底部的代码图标来下载该文件。
您仅仅需要使用 JavaScript 的属性就可以查看 XML 的任何部分。例如:
print(x.person[0].name);
Ant
print(x.person[1].hair);
Spiky
您注意到了吗,到目前为止,我们还没有使用诸如 DOM 或者 SAX 之类的 XML API。XML 只是变成了一种 JavaScript 能够理解的本地类型。
使用以下代码来打印两个人的高度:
for each (var h in x..height) { print(h) };
176
178
语法非常有用。它返回所有的,任何深度的能够匹配后面紧跟的标记名称的子元素。因此 x..height 返回 height 标记的数值。
以下是另一个有用的语法:
print(x.person.(name=="Ant").hair);
Shaggy
这将使得在 XML 树中可以很容易地进行查看操作。
一个更复杂的样本实例
假定您想要将高度值从米制度量单位更改为英美制度量单位(也就是英国人常说的英尺和英寸单位)。
下面首先是厘米到英寸的转换...
function metricToImperial(cms) {
var totalinches = Math.round(cms/2.54);
var inch = totalinches%12;
var ft = (totalinches-inch)/12;
var response =
response.feet = ft;
response.inches = inch + 2; // we sounded a bit short
response.@measure = "imperial";
return response;
}
首先值得注意的一行是:
var response =
该行允许您将 XML “嵌入”到 JavaScript 中。采用这种语法有两个好处:第一,它确实会使 XML 的使用变得很容易。第二,这些代码的意义非常清晰。
现在您可以向该元素中添加更多的子元素:
response.feet = ft;
这样创建了
您也可以用这种方式操作其属性:
response.@measure = "imperial";
现在我们使用该功能来更新 XML:
for each (var p in x.person) {
if (p.height.@measure=="metric")
p.height=metricToImperial(p.height);
}
print (x);
这里是输出内容:
- 上一篇:Ajax驱动的Web站点
- 下一篇:.net Ajax无刷新技术