Access XML data using JavaScript

黄舟
Release: 2017-03-03 17:11:58
Original
1545 people have browsed it

Among web browser software, Internet Explorer (IE) is now a standard software. As you can see, almost every machine running a different version of the Windows operating system (and many other operating systems) uses IE. Microsoft has included the functionality of IE in implementing mature xml processing technology through ActiveX controls.

In this article, we will describe how to use ActiveX features in IE to access and parse XML documents, thereby allowing web surfers to manipulate them.

Web surfing
We start with a standard sequential document, as shown in Table A. This document contains simple sequential data for browsing by web surfers. Not only to display this data, we also provide a simple user interface that anyone surfing the Internet can use to browse XML documents.

Table 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>
Copy after login

We use a web form to access this XML document. This form will display the SKU, price, quantity, and subtotal of each part. , and a description of each option in the sequence. Our form also contains buttons for forward and backward browsing options.

Composition of a web page
The important part of a web page is the form. We will use a table to display it on the screen in an easy-to-read manner. The following is a code snippet for displaying an HTML table:

<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>
Copy after login

Please note that we include two buttons below the table, which are to browse the previous and next records through the getDataNext() and getDataPrev() functions. , this is also the issue we want to discuss.

Script
In fact, the essential part of our web page is not the form, but the script that controls the form. Included in our script are four parts. First, we initialize the web page by loading an XML document. The second part is to navigate to the next record. The third step is to navigate to the previous record. The fourth part is to extract a single value from the XML document. Table B shows the entire content of our web page.

Table 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>
Copy after login

Run
This web page will pass in and run the initialization of the script. You must make sure that the order.xml document is in the same path as jsxml.html.

The initialization part instantiates a new ActiveX object as the MSXML2.DOMDocument.3.0 object type, and then the script passes the order.xml document into memory and selects all /Order/Item nodes. We use the /Order/Item node to identify the options that the document already contains.

The standard in the document has an onLoad attribute, which enables the web page to initialize by calling getDataNext(). This feature can be used to get the next value from an XML document and display it in a form. We use a simple index to access specific options.

Both the forward (>>) and backward (<<) buttons use the same mechanism. First, call getDataNext() or getDataPrev() in response to the onClick event. These two functions use logical methods to avoid accessing our records outside the scope of the document.

The above is the content of using JavaScript to access XML data. For more related content, please pay attention to the PHP Chinese website (www.php.cn)!


Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template