您的位置: 首页 arrow 技术资料 arrow web服务器 arrow AJAX及使用E4X编写Web服务脚本系列之二  

 

新闻快讯

    新仓信息技术有限公司新的网站架构于强大的cms系统Mambo,新的网站更加方便公司信息的发布。著名的开源软件Mambo架构于mysql+php,特别适合中小型门户网站的搭建,能大大减少企业建站的成本,毫不夸张的说,Mambo是最强大的cms系统之一,很多国内的所谓的cms在Mambo面前真的毫无是处。如果您需要架构基于mambo的网站,可以来电021-51089670获取更多信息,更多关于mambo的介绍请点击。。。。


 
AJAX及使用E4X编写Web服务脚本系列之二
2006-01-12
通过 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

rint(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 = <height/>;

response.feet = ft;

response.inches = inch + 2; 

// we sounded a bit short

response.@measure = "imperial";

return response;

}


首先值得注意的一行是:

var response = <height/>;


该行允许您将 XML “嵌入”到 JavaScript 中。采用这种语法有两个好处:第一,它确实会使 XML 的使用变得很容易。第二,这些代码的意义非常清晰。现在您可以向该元素中添加更多的子元素:

response.feet = ft;


这样创建了 子元素,其标记名称被设置为“feet”,并且将数值设置为变量 ft 的值。您也可以用这种方式操作其属性:

response.@measure = "imperial";


现在我们使用该功能来更新 XML:

for each (var p in x.person) 

{ 

if (p.height.@measure=="metric") 

.height=metricToImperial(p.height);  

}

print (x);


这里是输出内容:

<people>

<person gender="male">

<name>Ant</name>

<hair>Shaggy</hair>

<eyes>Blue</eyes>

<height measure="imperial">

<feet>5</feet>

<inches>11</inches>

</height>

</person>

<person gender="male">

<name>Paul</name>

<hair>Spiky</hair>

<eyes>Grey</eyes>

<height measure="imperial">

<feet>5</feet>

<inches>12</inches>

</height>

</person>

lt;/people>
用户登录
用户名

密码

记住我
忘记密码
没有账户? 马上注册
友情链接
申请链接