DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> AJAX入門 >> AJAX詳解 >> AJAX及使用E4X編寫Web服務腳本(1)
AJAX及使用E4X編寫Web服務腳本(1)
編輯:AJAX詳解     
本文先簡單介紹一下可以用於 XML的 ECMAScript(ECMAScript for XML,E4X),它是一種對 JavaScript 的簡單擴展,這使得編寫 XML 腳本非常的簡單。在本文中,作者演示了一種稱為異步 JavaScript 及 XML(Asynchronous Javascript and XML,AJax)的 Web 編程模型,並且向您展示 JavaScript 的一些新 XML 擴展是如何使其更易於實現。 

用於 XML 的 ECMAScript

您以前可能沒有遇到過這個術語 ECMAScript。它實際上是 Javascript 的正式名稱。歐洲計算機制造商協會(European Computer Manufacturers Association,ECMA)是制定 JavaScript 標准的標准化組織(同時 C# 和CLR 標准也是該協會制定的)。ECMAScript 標准可以從 ECMA Web 站點免費獲得。

E4X 是 JavaScript 的擴展,它實際上就是在 Javascript 中添加了對 XML 的直接支持。它同時也是一種 ECMA 標准(查看參考資料——ECMA-357)。那麼它對 XML 的直接支持是什麼呢?為什麼它具有很高的價值?如果您是一名 JavaScript 程序員,那麼您可能已經使用了諸如 Netscape LiveConnect 或者 Rhino (一種運行在 Java™ 下的可以免費獲得的 JavaScript 庫)之類的技術來在您的 Javascript 中使用這些 Java 庫。這也就意味著您在 XML 庫的幫助下已經可以創建、操作和使用 XML。同樣地,如果您使用了 Microsoft® Internet Explorer,那麼您已經通過 Microsoft MSXML2 庫獲得了 XML 的支持。這樣的話,如果您已經使用了那些庫文件,那麼請做好進行重要變動的准備——E4X 會比它們更簡單和容易。

在我們查看樣本實例之前,對該試驗需要注意:此時 E4X 有兩種可用的實現方式。這兩種可用的方式都是來自Mozilla。一種是浏覽器使用的 C Javascript 引擎(它是用代碼來命名的 SpiderMonkey),並且在最新的 Mozilla 版本——我們使用 Mozilla 1.8a6 中是可用的。E4X 同樣在 Rhino 中也是可用的。Rhino 是 Java 內置的 JavaScript 解釋程序和編譯程序,我們將展示其獨立使用及運行在 Axis 內部的情景。兩者都可以從 Mozilla 獲得。

在這些樣本實例中,我們首先從使用 Rhino 的命令行上的 E4X 開始,然後轉向在使用 Mozilla 的浏覽器內部使用 E4X,同時演示 AJax 模型。在第二篇文章中,我們將向您展示如何通過將 Rhino 嵌入到 apache Axis Web 服務引擎中來使用服務器內部的 E4X。但是在我們轉向 Web 服務之前,先向您展示 E4X 中的 XML 編程基礎。

一個簡單樣例

我們首先從一個簡單的實例開始。我們首先對表示作者的相關信息的 XML 進行分析和操作。我們想得到的 XML 如下所示:

清單 1. 作者 XML 文檔

<people>

<person gender="male">

<name>Ant</name>

<hair>Shaggy</hair>

<eyes>Blue</eyes>

<height measure="metric">176</height>

</person>

<person gender="male">

<name>Paul</name>

<hair>Spiky</hair>

<eyes>Grey</eyes>

<height measure="metric">178</height>

</person>

</people>

如果我們以字符串的形式得到了該 XML 文檔,那麼就可以通過以下簡單操作來“解析”該字符串:

var x = new XML(peopleXMLString);

另外,我們也可以簡單地將該 XML“嵌入”到代碼中:

var x =

<people>

<person gender="male">

<name>Ant</name>

<hair>Shaggy</hair>

<eyes>Blue</eyes>

<height measure="metric">176</height>

</person>

<person gender="male">

<name>Paul</name>

<hair>Spiky</hair>

<eyes>Grey</eyes>

<height measure="metric">178</height>

</person>

</people>;

是的——這是正確的——XML 變成了這種語言的一個直接部分
通過 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 APIXML 只是變成了一種 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;

這樣創建了 <height> 子元素,其標記名稱被設置為“feet”,並且將數值設置為變量 ft 的值

您也可以用這種方式操作其屬性:

response.@measure = "imperial";

現在我們使用該功能來更新 XML:

 

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved