JavaScript解析XML(修改版)

來源:互聯網
上載者:User

此修改版是修改網上某篇文章之後能夠啟動並執行版本。

原文標題《使用ActiveX功能尋找並顯示XML資料》

出錯原因:getDataNext()中if(i>items.length-1) i = 0;報錯資訊為:"完成該操作所需的資料還不可使用",但是按>>或<<按鈕資料不會顯示,不知道哪裡有問題呀。

修改後指令碼在 Win8 + IE10測試通過

  jsxml.html

<html>  <head>    <script language="JavaScript"><!--    var i = -1;    var orderDoc = loadXML("order.xml");    var items = orderDoc.selectNodes("/Order/Item");            function getNode(doc, xpath) {      var retval = "";      var value = doc.selectSingleNode(xpath);      if (value) retval = value.text;      return retval;    }        // 載入xml文檔 function loadXML(xmlFile) {        var xmlDoc;        if (window.ActiveXObject) {            xmlDoc = new ActiveXObject('Microsoft.XMLDOM');            xmlDoc.async = false;            xmlDoc.load(xmlFile);        }        else if (document.implementation && document.implementation.createDocument) {            xmlDoc = document.implementation.createDocument('', '', null);            xmlDoc.load(xmlFile);        }        else {            return null;        }        return xmlDoc; }    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

<?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>
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.