龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > Javascript编程 >

AJAX及使用E4X编写Web服务脚本(1)(2)

时间:2013-03-06 14:58来源:未知 作者:admin 点击:
分享到:
通过 Rhino 使用 E4X 如果您同我们的操作完全一样,那么现在就可以尝试该操作。Rhino 1.6R1 最新的版本以及来自 Apache 的 XMLBeans 程序库都支持 E4X。使用它们
通过 Rhino 使用 E4X

如果您同我们的操作完全一样,那么现在就可以尝试该操作。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;

这样创建了 子元素,其标记名称被设置为“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);

这里是输出内容:


 
    Ant
    Shaggy
    Blue
   
      5
      11
   

 

 
    Paul
    Spiky
    Grey
   
      5
      12
   

 

精彩图集

赞助商链接