亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > XML > 正文

如何從各種XML數據源中提取數據,以及如何使用JavaScript顯示數據

2024-09-05 20:55:15
字體:
來源:轉載
供稿:網友

? ? XML數據源對象是一個ActiveX控件,允許你在XML文件和HTML頁面之間操作數據。本文將向你展示如何從各種XML數據源中提取數據,以及如何使用JavaScript顯示這些數據。

  XML數據源對象DSO是一個微軟ActiveX控件,構建在微軟IE4以后的版本上。這個對象允許你把一個外部的XML文件或者嵌入HTML文件中的內容提取到HTML頁面中。

  你可以在一個Web頁面中使用XML - DSO從一個外部XML文件中選取內容,從嵌入Web頁面的XML中提取XML數據,然后使用JavaScript操作這些數據。然而,并不建議在Internet中使用這個對象,因為DSO只能工作在MSIE 4以上的瀏覽器中,因此這可能會帶來一些兼容性問題。 所以,在企業內部網使用XML-DSO是很合適的。

  開始

  為了初始化XML - DSO對象,我們使用<OBJECT>標記。 用于XML-DSO的CLASSID是:

    CLSID:550dda30-0541-11d2-9ca9-0060b0ec3d39

  這ID唯一標識XML-DSO。使用下面的代碼在一個Web頁面中初始化這個控件:

 ?。糘BJECT ID="SomeID" CLASSID="CLSID:550dda30-0541-11d2-9ca9-0060b0ec3d39"></OBJECT>

  雖然大部分對象需要許多參數與之相關聯,但是XML-DSO不需要任何參數。

  使用一個XML數據島析取數據

  首先,通過使用<XML>標記包含一個XML數據島。其次,給它分配一個ID,xmldb --以備以后使用。 數據實際上是使用HTML標記:<ALT>,<SPAN>,<DIV>等等提取的。代碼列表1中的代碼使用了<SPAN>標記。datasrc屬性指定了你想從中提取數據的那個數據島。datafld屬性指定了你想要的數據的XML標記。所以,第一個<SPAN>提取名稱,而第二<SPAN>提取性別。

  代碼列表1:

?

?

<!-- example1.htm -->
<html>
<head>
<title>XML DSO-example1.htm</title>
</head>
<body bgcolor="#FFFFFF">
<xml id="xmldb">
<db>
<member>
<name>Premshree Pillai<name>
<sex>male</sex>
</member>
<member>
<name>Vinod</name>
<sex>male</sex>
</member>
</db>
</xml>

<span datasrc="#xmldb" datafld="name"<</span>
<br>
<span datasrc="#xmldb" datafld="sex"></span>

</body>
</html>


  注意這段代碼沒有初始化一個XML-DSO對象。這是因為XML數據島的使用中已經隱式地創建了一個。輸出應為:
  
  Premshree Pillai
  male

  注意在XML數據島中有兩個<name>和<sex>標記。使用這個方法,你只能提取這些標記中的第一個實例。代碼列表2中的代碼使用<TABLE>標記提取所有的實例:

  輸出將是:
   

Name Sex
Premshree Pillai male
Vinod male


  在代碼列表2中,<TABLE>標記使用<TD>標記內的<DIV>標記提取數據。表格將自動重復<member>(<name>和<sex>的母標記)的每個實例。

  代碼列表2:

?

?

<!-- example2.htm -->
<html>
<head>
<title>XML DSO-example2.htm</title>
</head>
<body bgcolor="#FFFFFF">

<xml id="xmldb">
<db>
<member>
<name>Premshree Pillai<name>
<sex>male</sex>
</member>
<member>
<name>Vinod</name>
<sex>male</sex>
</member>
</db>
</xml>

<table datasrc="#xmldb" border="1">
<thead>
<th>Name</th>
<th>Sex</th>
</thead>
<tr>
<td><div datafld="name"></div></td>
<td><div datafld="sex"></div></td>
</tr>
</table>

</body>
</html>


  使用外部XML文件提取數據

  為了使用XML-DSO加載一個外部XML文件,你必須顯式的包含這個對象并且使用一些JavaScript。

  首先創建一個XML-DSO對象,使用ID myXML。添加寬度和高度屬性到<OBJECT>標記中,然后設置它們的值為0。這保證XML-DSO對象不會占據你的Web頁面的任何空間。

  其次,使用datasrc創建一個象myXML一樣的表--類似于代碼列表2中一樣。代碼使用<DIV>標記(在TD標記之)提取數據,使用datafld作為第一欄的信息,并且使用URL作為第二欄。添加<SCRIPT>標記,因為在這里,外部的XML使用Java腳本顯式地聲明你想要加載的XML文件。

  設置變量xmlDso為myXML.XMLDocument。myXML引用你已經創建的對象。接下來,使用XML-DSO的load()方法加載example3.xml。文件example3.xml連接到對象myXML上。

?

?

?

?

<!-- example3.xml -->
<?xml version="1.0" ?>
<ticker>
<item>
<message>JavaScript Ticker using XML DSO</message>
<URL>http://someURL.com</URL>
</item>
</ticker>


  現在,研究一下下面的HTML頁面:

?

?

?

?

<!-- example3.htm -->
<html>
<head>
<title>XML DSO-example3.htm</title>
<script language="JavaScript">
function load() {
var xmlDso=myXML.XMLDocument;
xmlDso.load("example3.xml");
}
</script>
</head>
<body bgcolor="#FFFFFF" onLoad="load()">

<object id="myXML" CLASSID="clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39"
width="0" height="0"></object>

<table datasrc="#myXML" border="1">
<thead>
<th>Message</th>
<th>URL</th>
</thead>
<tr>
<td><div datafld="message"></div></td>
<td><div datafld="URL"></div></td>
</tr>
</table>

</body>
</html>


  輸出應是:

   Message URL
   JavaScript Ticker using XML DSO http://someURL.com

  上面的腳本非常特殊化。下面給出一個更一般的腳本:

?

?

?

?

<script language="JavaScript">
var xmlDso;
function load(xmlFile, objName) {
eval('xmlDso='+objName+'.XMLDocument');
xmlDso.load(xmlFile);
}
</script>
Now, to load any XML file use:
load("SomeXMLFile.xml","anyXmlDsoObject");


  使用XML-DSO和JavaScript

  假設你有一個包含姓名、電子郵件地址和電話號碼的XML文件。你想使用它構建一個應用程序,顯示每個人的檔案--一次顯示一個。用戶將使用"Next"和"Previous"按鈕瀏覽每個人的數據。Javascript可以幫助你實現這個目的。

  下面的代碼使用記錄集方法把文件中所有的數據保存到一個變量memberSet中。moveNext()方法指向下一個數據項(下一行)。腳本然后載入XML文件example4.xml,把記錄保存到變量memberSet中。第一個記錄將被顯示,但是memberSet.moveNext()指向文件中相對于前一個指定數據的下一個記錄。

?

?

?

?

<!-- example4.xml -->
<?xml version="1.0" ?>
<myDB>
<member>
<name>Premshree Pillai</name>
<sex>male</sex>
</member>
<member>
<name>Vinod</name>
<sex>male</sex>
</member>
<member>
<name>Santhosh</name>
<sex>male</sex>
</member>
</myDB>


  這里是相應的HTML文件:

?

?

?

?

<!-- example4.htm -->
<html>
<head>
<title>XML DSO-example4.htm</title>
<script language="JavaScript">
function load() {
var xmlDso=myDB.XMLDocument;
xmlDso.load("example4.xml");

/* Get the complete record set */
var memberSet=myDB.recordset;

/* Go to next data */
memberSet.moveNext();
}
</script>
</head>
<body bgcolor="#FFFFFF" onLoad="load()">

<object id="myDB" CLASSID="clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39"
width="0" height="0"></object>

<span datasrc="#myDB" datafld="name"></span>

</body>
</html>


  輸出應是:

   Vinod

  下面給出更多使用JavaScript操作XML-DSO的方法:

   · movePrevious(): 指向前一個數據項。

   · moveFirst(): 指向第一個數據項。

   · moveLast(): 指向最后一個數據項。

   · EOF: 這個屬性用來檢測我們是否已經到達數據記錄的底部。

  使用XML-DSO和JavaScript

  假設你有一個包含姓名、電子郵件地址和電話號碼的XML文件。你想使用它構建一個應用程序,顯示每個人的檔案--一次顯示一個。用戶將使用"Next"和"Previous"按鈕瀏覽每個人的數據。Javascript可以幫助你實現這個目的。

  下面的代碼使用記錄集方法把文件中所有的數據保存到一個變量memberSet中。moveNext()方法指向下一個數據項(下一行)。腳本然后載入XML文件example4.xml,把記錄保存到變量memberSet中。第一個記錄將被顯示,但是memberSet.moveNext()指向文件中相對于前一個指定數據的下一個記錄。

?

?

?

?

<!-- example4.xml -->
<?xml version="1.0" ?>
<myDB>
<member>
<name>Premshree Pillai</name>
<sex>male</sex>
</member>
<member>
<name>Vinod</name>
<sex>male</sex>
</member>
<member>
<name>Santhosh</name>
<sex>male</sex>
</member>
</myDB>


  這里是相應的HTML文件:

?

?

?

?

<!-- example4.htm -->
<html>
<head>
<title>XML DSO-example4.htm</title>
<script language="JavaScript">
function load() {
var xmlDso=myDB.XMLDocument;
xmlDso.load("example4.xml");

/* Get the complete record set */
var memberSet=myDB.recordset;

/* Go to next data */
memberSet.moveNext();
}
</script>
</head>
<body bgcolor="#FFFFFF" onLoad="load()">

<object id="myDB" CLASSID="clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39"
width="0" height="0"></object>

<span datasrc="#myDB" datafld="name"></span>

</body>
</html>


  輸出應是:

   Vinod

  下面給出更多使用JavaScript操作XML-DSO的方法:

   · movePrevious(): 指向前一個數據項。

   · moveFirst(): 指向第一個數據項。

   · moveLast(): 指向最后一個數據項。

   · EOF: 這個屬性用來檢測我們是否已經到達數據記錄的底部。

  initTicker()首先檢查是否有IE 4+。如果瀏覽器是IE4+,這個XML文件被作為一個參數被傳遞并載入。如果定時器失敗了,那么調用xmlDsoTicker()函數。xmlDsoTicker()除了xmlFile參數以外,和initTicker()有相同的參數,因為XML文件已經被載入。xmlDsoTicker()檢查變量counter(初始值為maxMsgs)是否小于maxMsgs-1。如果是,moveNext()方法指向tickerSet中下一個數據項。

  HTML頁面的BODY包含下面的代碼:

?

?

?

?

<a href=" datasrc="#ticker" datafld="URL" class="tickerStyle">
<span datasrc="#ticker" datafld="message"></span>
</a>



圖1:定時器應用程序顯示輸出。

  在這段代碼中,<A>標記把XML文件的URL作為它的datafld。<SPAN>標記把XML文件的信息作為它的datafld。這個信息在<SPAN>元素中顯示,然后整個信息可以通過這段信息相應的URL連接。

  這樣,<A>和<SPAN>元素包含下一個數據項(URL和信息)。在一段延遲以后,<A>和<SPAN>指向下一個數據。只要counter<maxMsgs-1(計數器每次遞增),這個操作就會發生。如果counter<maxMsgs-1是假,計數器就被設置為0,然后指向tickerSet中的第一個數據項。

?

?

?

?

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久全球大尺度高清视频| 中文字幕欧美日韩| 国产一区二区精品丝袜| 6080yy精品一区二区三区| 亚洲人午夜精品| 欧美另类99xxxxx| 久久久噜久噜久久综合| 九九九久久久久久| 1769国产精品| 国产日韩欧美影视| 国产精品久久久久不卡| 国产精品中文字幕在线观看| 亚洲精品综合久久中文字幕| 77777少妇光屁股久久一区| 欧美成人免费播放| 欧美黄色性视频| 久久精品电影一区二区| 青青草精品毛片| 欧美在线视频观看免费网站| 国内精品久久久久伊人av| 黑人极品videos精品欧美裸| 亚洲电影免费观看| 国产精品国产三级国产aⅴ浪潮| 成人午夜两性视频| 日产日韩在线亚洲欧美| 亚洲a成v人在线观看| 亚洲一区二区免费在线| 亚洲一区二区三区乱码aⅴ蜜桃女| 成人网中文字幕| 日韩成人高清在线| 日韩精品视频在线| 久久777国产线看观看精品| 欧美高清在线播放| 日韩美女在线观看一区| 日韩在线精品一区| 亚洲黄色在线观看| 国精产品一区一区三区有限在线| 91精品视频在线播放| 亚洲高清免费观看高清完整版| 国产成人在线视频| 国产91色在线|免| 久久综合免费视频影院| 亚洲欧美日韩精品久久| 亚洲色图欧美制服丝袜另类第一页| 久久99亚洲精品| 亚洲欧美另类中文字幕| 欧美激情视频在线免费观看 欧美视频免费一| 91精品国产自产在线老师啪| 97久久精品人搡人人玩| 69av在线视频| 88国产精品欧美一区二区三区| 中文字幕成人精品久久不卡| 九九热精品视频| 久久久视频免费观看| 亚洲欧美在线播放| 成人免费激情视频| 国产69精品久久久久9999| 奇米一区二区三区四区久久| 97久久精品人人澡人人爽缅北| 欧美日本高清一区| 亚洲国模精品一区| 成人av在线网址| 97在线精品国自产拍中文| 97久久精品人人澡人人爽缅北| 中文字幕精品影院| 91chinesevideo永久地址| 国产欧美在线看| 精品国产91乱高清在线观看| 亚洲综合精品伊人久久| 国产亚洲激情在线| 欧美精品一本久久男人的天堂| 国产精品久久久久久久久久新婚| 国产亚洲欧洲高清一区| 日韩激情视频在线| 91精品久久久久久久| 国产成人精品av在线| 91久久精品美女| 亚洲人高潮女人毛茸茸| 欧美精品videosex牲欧美| 人人爽久久涩噜噜噜网站| 狠狠爱在线视频一区| 亚洲男人第一网站| 日韩亚洲欧美中文高清在线| 国产日韩综合一区二区性色av| 国产精品久久久久久久久免费| 国产欧美日韩综合精品| 亚洲天堂男人的天堂| 国内精品一区二区三区| 一二美女精品欧洲| 91影视免费在线观看| 麻豆国产精品va在线观看不卡| 日本久久久久久| 一本久久综合亚洲鲁鲁| 久久中文字幕一区| 国产一区二区在线播放| 精品亚洲一区二区三区在线播放| 成人淫片在线看| 色偷偷亚洲男人天堂| 日本不卡免费高清视频| 热久久这里只有| 亚洲成人教育av| 日韩网站在线观看| 国内精品久久久久伊人av| 欧美亚洲伦理www| 久久久久在线观看| 九九视频这里只有精品| 亚洲精品国产精品国自产观看浪潮| 高清一区二区三区日本久| 久久免费成人精品视频| 亚洲天堂色网站| 91av在线精品| 日本19禁啪啪免费观看www| 欧美激情在线观看视频| 亚洲第一区第一页| 久久伊人色综合| 中文字幕欧美日韩在线| 国产日韩在线精品av| 中文字幕国产精品久久| 奇米成人av国产一区二区三区| 91av视频在线播放| 欧美精品免费看| 欧美视频在线观看 亚洲欧| 久久精品国产亚洲精品2020| 97**国产露脸精品国产| 日本精品性网站在线观看| 欧美午夜女人视频在线| 欧美xxxx做受欧美.88| 久久久免费精品| 久久免费成人精品视频| 成人在线国产精品| 日韩av片永久免费网站| 国产精品永久免费在线| 精品自拍视频在线观看| 日韩久久精品电影| 午夜免费日韩视频| 97久久精品在线| 欧美综合一区第一页| 日韩69视频在线观看| 亚洲男人天堂2024| 精品久久久久久久大神国产| 日韩在线观看免费高清| 国产精品麻豆va在线播放| 97欧美精品一区二区三区| 亚洲国产欧美久久| 国产精品福利网| 国内偷自视频区视频综合| 黄色一区二区三区| 中文字幕亚洲一区二区三区| 欧洲一区二区视频| 国产精品夜色7777狼人| 国产91在线高潮白浆在线观看| 亚洲bt天天射| 亚洲国产成人精品一区二区| 国产精品丝袜一区二区三区| 91精品国产免费久久久久久| 国产亚洲免费的视频看| 在线性视频日韩欧美| 亚洲午夜av久久乱码| 国产亚洲精品美女久久久| 91亚洲精品一区二区| 成人免费淫片aa视频免费| 国产精品国模在线| 日韩av电影免费观看高清| 日韩欧美国产成人|