您的位置:首页 > Web前端 > JavaScript

javascript解析xml例子

2013-01-25 13:31 357 查看
XML code
<?xml version="1.0" encoding="utf-8"?>
<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>


HTML code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>jsLoadXml.html</title>
<meta name="generator" content="editplus" />
<meta name="author" content="Gao YiXiang" />
<meta name="email" content="yixianggao@126.com" />
<meta name="keywords" content="javascript dhtml dom" />
<meta name="description" content="I love web development." />
<script language="JavaScript">
<!--
/*
* 创建 XmlDom 对象实例。
*/
function createXmlDom()
{
var xmlVersions = new Array("MSXML2.DOMDocument.5.0", "MSXML2.DOMDocument.4.0",
"MSXML2.DOMDocument.3.0", "MSXML2.DOMDocument", "Microsoft.XmlDom");

for (var i=0; i<xmlVersions.length; i++)
{
try
{
var oXmlDom = new ActiveXObject(xmlVersions[i]);

return oXmlDom;
}
catch (e)
{
//alert(e.message);
}
}

throw new Error("当前系统未安装 MSXML!");
}

function getNode(doc, xpath)
{
var retval = "";

var value = doc.selectSingleNode(xpath);

if (value) retval = value.text;

return retval;
}

function fillValues(itemIndex)
{
document.forms[0].SKU.value = getNode(orderDoc, "/Order/Item[" + itemIndex + "]/SKU");
document.forms[0].Price.value = getNode(orderDoc, "/Order/Item[" + itemIndex + "]/PricePer");
document.forms[0].Quantity.value = getNode(orderDoc, "/Order/Item[" + itemIndex + "]/Quantity");
document.forms[0].Total.value = getNode(orderDoc,"/Order/Item[" + itemIndex + "]/Subtotal");
document.forms[0].Description.value = getNode(orderDoc, "/Order/Item[" + itemIndex + "]/Description");
}
function getDataNext()
{
i++;

if (i > items.length) i = 1;

fillValues(i);
}

function getDataPrev()
{
i--;

if (i < 1) i = items.length;

fillValues(i);
}

var dataSource = "order.xml";

var orderDoc = createXmlDom();

orderDoc.load(dataSource);

// 通过 XPath 方式读取全部订单项!
var items = orderDoc.selectNodes("/Order/Item");

var i = 0;
//-->
</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>


==========================================< 2 >==============================================


data.xml
XML code [code]<?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>1000000</salary></employee>
</employees>


test.htm
HTML code
<html>
<head>
<title>Employee Data</title>
<style>
tr.hl{
background:#08246B;
color:white;
}
</style>
<script>
function loadXML(url,handler)
{
if(document.implementation&&document.implementation.createDocument)
{
var xmldoc=document.implementation.createDocument("","",null);
xmldoc.onload=function(){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("id","tab");
table.setAttribute("border","1");
table.setAttribute("width","500");
document.body.appendChild(table);
table.createCaption().appendChild(document.createTextNode("Employee Data from  "+url));
var header=table.createTHead();
var headerrow=header.insertRow(0);
headerrow.insertCell(0).appendChild(document.createTextNode("Name"));
headerrow.insertCell(0).appendChild(document.createTextNode("Job"));
headerrow.insertCell(0).appendChild(document.createTextNode("Salary"));
var es=xmldoc.getElementsByTagName("employee");
for(var i=0;i<es.length;i++)
{
var e=es[i];
var name=e.getAttribute("name");
var job=e.getElementsByTagName("job")[0].firstChild.data;//"firstChild.data" is all right
var sal=e.getElementsByTagName("salary")[0].firstChild.nodeValue;
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(sal));
}
}

var index=0;
document.onkeydown=function(e)
{
e=e?e:window.event;
var tb=document.getElementById('tab');
if(tb==null)return;
loseHightLight(tb);
switch(e.keyCode)
{
case 38:
index--;
if(index<0)
index=tab.rows.length-1;
tb.rows[index].className="hl";
break;
case 40:
index++;
if(index>tab.rows.length-1)
index=0;
tb.rows[index].className="hl";
break;
}
}
function loseHightLight(tb)
{
for(var i=0;i<tb.rows.length;i++)
{tb.rows[i].className="";}
}
</script>
</head>
<body onload="loadXML(location.search.substring(1),makeTable)">
</body>

</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: