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

首頁 > 編程 > JavaScript > 正文

使用JavaScript訪問XML數據

2019-11-18 19:55:01
字體:
來源:轉載
供稿:網友

在網絡瀏覽器軟件中,可以Internet Explorer (IE)現在是一種標準的軟件??梢钥吹剑\行不同版本的Windows操作系統(和很多其他的操作系統)的每一臺機器幾乎都使用IE。微軟已經通過ActiveX控件將IE的功能包含在執行成熟的xml處理技術中。

在本篇文章中,我們將講述如何在IE中使用ActiveX功能來訪問并解析XML文檔,由此允許網絡沖浪者操縱它們。

網上沖浪
我們以一個標準的順序文檔而開始,如表A所示。這一文檔包含簡單的順序數據以提供網絡沖浪者瀏覽之用。不僅僅為了顯示這些數據,我們還提供了一個簡單的用戶界面,網上沖浪都可以使用這一界面來瀏覽XML文檔。

表A: order.xml
<?xml version="1.0" ?>
<Order>
  <Account>9900234</Account>
  <Item id="1">
    <SKU>1234</SKU>
    <PRicePer>5.95</PricePer>
    <Quantity>100</Quantity>
    <Subtotal>595.00</Subtotal>
    <Description>Super Widget Clamp</Description>
  </Item>
  <Item id="2">
    <SKU>6234</SKU>
    <PricePer>22.00</PricePer>
    <Quantity>10</Quantity>
    <Subtotal>220.00</Subtotal>
    <Description>Mighty Foobar Flange</Description>
  </Item>
  <Item id="3">
    <SKU>9982</SKU>
    <PricePer>2.50</PricePer>
    <Quantity>1000</Quantity>
    <Subtotal>2500.00</Subtotal>
    <Description>Deluxe Doohickie</Description>
  </Item>
  <Item id="4">
    <SKU>3256</SKU>
    <PricePer>389.00</PricePer>
    <Quantity>1</Quantity>
    <Subtotal>389.00</Subtotal>
    <Description>Muckalucket Bucket</Description>
  </Item>
  <NumberItems>1111</NumberItems>
  <Total>3704.00</Total>
  <OrderDate>07/07/2002</OrderDate>
  <OrderNumber>8876</OrderNumber>
</Order>

我們使用一個網絡表單以訪問這一XML文檔,這一表單將顯示SKU,價格,數量,各部分的小計,以及順序中的每一選項的描述。我們的表單還包含向前和向后瀏覽選項的按鈕。

網頁的構成
網頁的重要部分是在于表單,我們將使用一個表以易讀的方式在屏幕上顯示。下面是顯示HTML表的代碼片段:

<form>
  <table border="0">
    <tr><td>SKU</td><td><input type="text" name="SKU"></td></tr>
    <tr><td>Price</td><td><input type="text" name="Price"></td></tr>
    <tr><td>Quantity</td><td><input type="text" name="Quantity"></td></tr>
    <tr><td>Total</td><td><input type="text" name="Total"></td></tr>
    <tr><td>Description</td><td><input type="text"
 name="Description"></td></tr>
  </table>
  <input type="button" value="  <<  " onClick="getDataPrev();">  <input
 type="button" value="  >>  " onClick="getDataNext();">
  </form>

請注意到,我們在表的下面包含了兩個按鈕,即通過getDataNext() 和getDataPrev()函數來瀏覽前一個和后一個的記錄,這也是我們所要討論的問題。

腳本
其實,我們網頁的實質部分不是在于表單,而是在于控制表單的腳本。在我們的腳本中包括四個部分。首先,我們通過載入XML文檔而初始化網頁。第二部分是導航到下一個記錄。第三步是導航到前一個記錄。第四部分是從XML文檔中提取單一的值。表B顯示了我們的網頁的全部內容。

表B: jsxml.html
<html>
  <head>
    <script language="javaScript">
<!--
    vari = -1;
    varorderDoc = new ActiveXObject("MSXML2.DOMDocument.3.0");
    orderDoc.load("order.xml");
    var items = orderDoc.selectNodes("/Order/Item");
       
    function getNode(doc, xpath) {
      varretval = "";
      var value = doc.selectSingleNode(xpath);
      if (value) retval = value.text;
      return retval;
    }
   
    function getDataNext() {
      i++;
      if (i > items.length - 1) i = 0;

      document.forms[0].SKU.value = getNode(orderDoc, "/Order/Item[" +
 i + "]/SKU");
      document.forms[0].Price.value = getNode(orderDoc, "/Order/Item["
 + i + "]/PricePer");
      document.forms[0].Quantity.value = getNode(orderDoc,
 "/Order/Item[" + i + "]/Quantity");
      document.forms[0].Total.value = getNode(orderDoc, "/Order/Item["
 + i + "]/Subtotal");
      document.forms[0].Description.value = getNode(orderDoc,
 "/Order/Item[" + i + "]/Description");
    }
   
    function getDataPrev() {
      i--;
      if (i < 0) i = items.length - 1;
     
      document.forms[0].SKU.value = getNode(orderDoc, "/Order/Item[" +
 i + "]/SKU");
      document.forms[0].Price.value = getNode(orderDoc, "/Order/Item["
 + i + "]/PricePer");
      document.forms[0].Quantity.value = getNode(orderDoc,
 "/Order/Item[" + i + "]/Quantity");
      document.forms[0].Total.value = getNode(orderDoc, "/Order/Item["
+ i + "]/Subtotal");
      document.forms[0].Description.value = getNode(orderDoc,
 "/Order/Item[" + i + "]/Description");
    }
   
// -->
    </script>
  </head>
  <body onload="getDataNext()">
  <h2>XML Order Database</h2>
  <form>
  <table border="0">
    <tr><td>SKU</td><td><input type="text" name="SKU"></td></tr>
    <tr><td>Price</td><td><input type="text" name="Price"></td></tr>
    <tr><td>Quantity</td><td><input type="text"
 name="Quantity"></td></tr>
    <tr><td>Total</td><td><input type="text" name="Total"></td></tr>
    <tr><td>Description</td><td><input type="text"
 name="Description"></td></tr>
  </table>
  <input type="button" value="  <<  " onClick="getDataPrev();">  <input
 type="button" value="  >>  " onClick="getDataNext();">
  </form> 
  </body>
</html>

運行
這一網頁將傳入并運行腳本的初始化。你一定確保order.xml文檔與jsxml.html在相同的相同的路徑上。

初始化部分將一個新的ActiveX對象例示為MSXML2.DOMDocument.3.0對象類型,然后腳本傳入order.xml文檔到內存中,并選擇所有的/Order/Item節點。我們使用/Order/Item節點以識別文檔已經包含的選項。

文檔中的<body>標準有一個onLoad屬性,這一屬性能夠使得網頁調用getDataNext()而初始化。這一功能可用于從XML文檔中獲得下一個值并顯示在表單中。我們使用一個簡單的索引來訪問特定的選項。

向前(>>)和向后(<<)按鈕都使用相同的機制。首先響應onClick事件而調用getDataNext() 或者getDataPrev(),這兩個函數使用了邏輯方法以避免文檔以外的范圍訪問我們的記錄。


----------------------------------------------------------------

本文作者Brian Schaffner是富士通咨詢公司的副主任。他為富士通的技術咨詢公司提供架構、設計和開發支持。

 

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品国产乱码久久久久久虫虫漫画| 最近更新的2019中文字幕| 精品国产91久久久久久老师| 日韩视频第一页| 欧美日韩在线观看视频| 在线精品视频视频中文字幕| 狠狠干狠狠久久| 精品久久久久久久久久国产| 91精品国产91久久久久久久久| 国产欧亚日韩视频| 亚洲乱亚洲乱妇无码| 在线精品91av| 精品美女国产在线| 亚洲激情自拍图| 亚洲精品动漫100p| 日韩专区在线播放| 久久频这里精品99香蕉| 九九精品在线视频| 91精品国产精品| 成人激情av在线| 精品日韩中文字幕| 日韩精品免费综合视频在线播放| 色噜噜亚洲精品中文字幕| 最近2019免费中文字幕视频三| 日韩国产在线看| 成人久久18免费网站图片| 欧美精品做受xxx性少妇| 国产精品夫妻激情| 北条麻妃久久精品| 亚洲精品国产精品乱码不99按摩| 91久久精品视频| 亚洲精品二三区| 国产精品人成电影| 欧美国产在线视频| 中国china体内裑精亚洲片| 91精品久久久久久久久久久| 国产成人一区二| 亚洲精品日韩欧美| 九九久久久久久久久激情| 国产精品第一视频| 亚洲色图综合久久| 日韩精品免费视频| 欧美巨大黑人极品精男| 国产这里只有精品| 欧美激情精品久久久久久久变态| 亚洲精品国产精品自产a区红杏吧| 性色av一区二区三区免费| 国产免费一区视频观看免费| 久久精品中文字幕一区| 国产精品免费一区二区三区都可以| 国产人妖伪娘一区91| 日韩成人黄色av| 日韩资源在线观看| 日本a级片电影一区二区| 亚洲精品动漫100p| 亚洲一区二区三区四区在线播放| 尤物yw午夜国产精品视频明星| 视频一区视频二区国产精品| 中文字幕无线精品亚洲乱码一区| 久久天堂av综合合色| 欧美视频专区一二在线观看| 一区二区欧美久久| 国产91九色视频| 中文字幕日韩电影| 久久久久免费视频| 欧美性色视频在线| 最近中文字幕mv在线一区二区三区四区| 亚洲精品在线91| 久久综合久久八八| 久久久久日韩精品久久久男男| 久久777国产线看观看精品| 一区二区在线视频播放| 精品国产999| 日韩av在线网站| 日韩国产精品一区| 美女久久久久久久| 欧美午夜性色大片在线观看| 78m国产成人精品视频| 热久久这里只有精品| 欧美性猛交xxxx乱大交| 91免费观看网站| 久久中文字幕在线| 日韩免费观看高清| 日韩欧美在线观看视频| 亚洲欧洲在线播放| 精品国产欧美一区二区三区成人| 成人黄色免费看| 日韩电影第一页| 狠狠久久亚洲欧美专区| 中文字幕欧美在线| 中文精品99久久国产香蕉| 成人av在线网址| 国产成人jvid在线播放| 91精品国产高清自在线看超| 国产精品福利网站| 中文字幕国产精品久久| 欧美性猛交99久久久久99按摩| 亚洲免费av电影| 欧美性猛交xxxx黑人猛交| 成人深夜直播免费观看| 亚洲欧美综合图区| 国产精品夫妻激情| 国产精品日韩欧美综合| 欧美自拍视频在线观看| 国语对白做受69| 成人动漫网站在线观看| 欧美一区三区三区高中清蜜桃| 久久精品青青大伊人av| 欧美性猛交xxxx富婆弯腰| 日韩麻豆第一页| 国内精品视频久久| 国产精品igao视频| 亚洲图片在区色| 欧美放荡办公室videos4k| 97在线看福利| 久久久久久亚洲精品| 国产精品wwwwww| 日韩电影免费观看在线观看| 久久久久成人精品| 亚洲欧洲一区二区三区久久| 蜜臀久久99精品久久久久久宅男| 亚洲午夜精品久久久久久久久久久久| 亚洲一二在线观看| 久久av中文字幕| 亚洲综合成人婷婷小说| 亚洲视频在线观看网站| 亚洲国产精品系列| 欧美激情二区三区| 在线观看欧美www| 亚洲色图美腿丝袜| 欧美日韩亚洲视频| 亚洲嫩模很污视频| 日韩av在线影院| 国产欧美精品久久久| 一本色道久久88综合亚洲精品ⅰ| 国产97色在线| 久久99视频免费| 国产午夜精品美女视频明星a级| 国产一区香蕉久久| 色多多国产成人永久免费网站| 精品久久久香蕉免费精品视频| 国产亚洲欧美aaaa| 中文字幕欧美视频在线| 久久97久久97精品免视看| 欧美午夜片在线免费观看| 国产精品黄视频| 国产丝袜视频一区| 91国内在线视频| 亚洲国产免费av| 精品亚洲一区二区三区| 青青草精品毛片| 在线观看视频99| 不用播放器成人网| 插插插亚洲综合网| 一色桃子一区二区| 欧美激情精品久久久久久| 亚洲色图av在线| 日韩电视剧免费观看网站| 欧美大片网站在线观看| 国产精品高清在线| 久久久久一本一区二区青青蜜月| 成人免费午夜电影| 琪琪亚洲精品午夜在线| www.亚洲一区|