<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>创建表格(数据从xml文件中读取)</title>
<script language="javascript">
function loadXML(handler) 
{
var url = "../xml/employees.xml";
if(document.implementation && document.implementation.createDocument) 
{
var xmldoc = document.implementation.createDocument("", "", null);
xmldoc.onload =  handler(xmldoc, url);
xmldoc.load(url);
}
else if(window.ActiveXObject) 
{
var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
xmldoc.onreadystatechange = function() 
{
if(xmldoc.readyState == 4) handler(xmldoc, url);
}
xmldoc.load(url);
}
}
function makeTable(xmldoc, url) 
{
var table = document.createElement("table");
table.setAttribute("border","1");
table.setAttribute("cellSpacing","1");
table.setAttribute("width","600");
table.setAttribute("class","tab-content");
document.body.appendChild(table);
var caption = "Employee Data from " + url;
table.createCaption().appendChild(document.createTextNode(caption));
var header = table.createTHead();
var headerrow = header.insertRow(0);
headerrow.insertCell(0).appendChild(document.createTextNode("姓名"));
headerrow.insertCell(1).appendChild(document.createTextNode("职业"));
headerrow.insertCell(2).appendChild(document.createTextNode("工资"));
var employees = xmldoc.getElementsByTagName("employee");
for(var i=0;i<employees.length;i++) 
{
var e = employees[i];
var name = e.getAttribute("name");
var job = e.getElementsByTagName("job")[0].firstChild.data;
var salary = e.getElementsByTagName("salary")[0].firstChild.data;
var row = table.insertRow(i+1);
row.insertCell(0).appendChild(document.createTextNode(name));
row.insertCell(1).appendChild(document.createTextNode(job));
row.insertCell(2).appendChild(document.createTextNode(salary));
}
}
</script>
<link href="css/style.css" rel="stylesheet" type="text/css">
</head><body onLoad="loadXML(makeTable)">
</body>
</html>employees.xml
<?xml version="1.0" encoding="gb2312"?>
<employees>
<employee name="J.Doe">
<job>Programmer</job>
<salary>32768</salary>
</employee>
<employee name="A.Baker">
<job>Sales</job>
<salary>70000</salary>
</employee>
<employee name="Big Cheese">
<job>CEO</job>
<salary>100000</salary>
</employee>
</employees>

解决方案 »

  1.   

    <html>
      <head>
        <script language="javascript">    var i = -1;
        var orderDoc = new ActiveXObject("MSXML2.DOMDocument.3.0");
        orderDoc.load("1.xml");
        var items = orderDoc.selectNodes("/Order/Item");
        //alert(orderDoc.selectNodes("/Order/Item[@name='22']"));   
        function getNode(doc, xpath) {
          var retval = "";
          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>
        
      <meta http-equiv="Content-Type" content="text/html; charset=gb2312"></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>这是 1.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" name="22">
        <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>