使用javascript遍歷XML文件並顯示

以下代碼在IE和Firefox上測試通過:
<html>
<head>
<script type="text/javascript">
var i = -1;
var orderDoc;
var xmlDoc;
var items;
var msgID = 0;

function loadXML()
{
try{

if (window.ActiveXObject) {
orderDoc= new ActiveXObject("MSXML2.DOMDocument.3.0");
orderDoc.load("order.xml");
items = orderDoc.selectNodes("/Order/Item");
getDataNext();
}
else if (document.implementation && document.implementation.createDocument)
{
/*
orderDoc= document.implementation.createDocument("","",null);
orderDoc.load("order.xml");
items = orderDoc.getElementsByTagName("Item");
alert(orderDoc.getElementsByTagName("price")[0].firstChild.nodeValue);
getElementsByTagName('PricePer')[0].firstChild.nodeValue);
alert(items.item.length);
*/
xmlDoc=document.implementation.createDocument("","",null);
//xmlDoc.load("data.xml");
xmlDoc.load("order.xml");
xmlDoc.οnlοad=getmessage;
//xmlDoc.getElementsByTagName('name')[0].firstChild.nodeValue;
//alert('222');
//orderDoc.load("data.xml");
//orderDoc.οnlοad=getmessage;
}
else
{
alert('Your browser cannot use this script');
}

}catch(e){alert(e);}
}

function getNode(doc, xpath) {
varretval = "";
var value = doc.selectSingleNode(xpath);
if (value) retval = value.text;
return retval;
}

function getDataNext() {
if (window.ActiveXObject) {
document.getElementById("alert").innerHTML="";
i++;
if (i > items.length - 1)
{
document.getElementById("alert").innerHTML="這是最後的一條數據";
i--;
return;
}

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");
}
else if (document.implementation && document.implementation.createDocument)
{
getNextMessage();
}
}

function getDataPrev() {
if (window.ActiveXObject) {
document.getElementById("alert").innerHTML="";
i--;
if (i < 0)
{
document.getElementById("alert").innerHTML="這是最前面的一條數據.";
i++;
return;
}

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");
}
else if (document.implementation && document.implementation.createDocument)
{
getPrevMessage();
}
}

window.onload = function() {
loadXML();
}

function getmessage()
{
//xmlDoc.getElementsByTagName("name")[0].firstChild.nodeValue;
//alert('2');
//document.getElementById("price").innerHTML=xmlDoc.getElementsByTagName("price")[0].firstChild.nodeValue;
//document.getElementById("description").innerHTML=xmlDoc.getElementsByTagName("description")[0].firstChild.nodeValue;
document.forms[0].SKU.value=xmlDoc.getElementsByTagName("SKU")[0].firstChild.nodeValue;
document.forms[0].Price.value=xmlDoc.getElementsByTagName("PricePer")[0].firstChild.nodeValue;
document.forms[0].Quantity.value =xmlDoc.getElementsByTagName("Quantity")[0].firstChild.nodeValue;
document.forms[0].Total.value =xmlDoc.getElementsByTagName("Subtotal")[0].firstChild.nodeValue;
document.forms[0].Description.value =xmlDoc.getElementsByTagName("Description")[0].firstChild.nodeValue;
}

function getPrevMessage(){
if (msgID > 0){
document.getElementById("alert").innerHTML="";
msgID--;
}else{
document.getElementById("alert").innerHTML="這是最前面的一條數據.";
return;
}
//alert(xmlDoc.getElementsByTagName("name").length);
/*
document.getElementById("name").innerHTML=xmlDoc.getElementsByTagName("name")[msgID].firstChild.nodeValue;
document.getElementById("price").innerHTML=xmlDoc.getElementsByTagName("price")[msgID].firstChild.nodeValue;
document.getElementById("description").innerHTML=xmlDoc.getElementsByTagName("description")[msgID].firstChild.nodeValue;
*/
document.forms[0].SKU.value=xmlDoc.getElementsByTagName("SKU")[msgID].firstChild.nodeValue;
document.forms[0].Price.value=xmlDoc.getElementsByTagName("PricePer")[msgID].firstChild.nodeValue;
document.forms[0].Quantity.value =xmlDoc.getElementsByTagName("Quantity")[msgID].firstChild.nodeValue;
document.forms[0].Total.value =xmlDoc.getElementsByTagName("Subtotal")[msgID].firstChild.nodeValue;
document.forms[0].Description.value =xmlDoc.getElementsByTagName("Description")[msgID].firstChild.nodeValue;
}

function getNextMessage(){
if (msgID < xmlDoc.getElementsByTagName("SKU").length-1){
document.getElementById("alert").innerHTML="";
msgID++;
}else{
document.getElementById("alert").innerHTML="這是最後的一條數據";
return;
}
/*
document.getElementById("name").innerHTML=xmlDoc.getElementsByTagName("name")[msgID].firstChild.nodeValue;
document.getElementById("price").innerHTML=xmlDoc.getElementsByTagName("price")[msgID].firstChild.nodeValue;
document.getElementById("description").innerHTML=xmlDoc.getElementsByTagName("description")[msgID].firstChild.nodeValue;
*/
document.forms[0].SKU.value=xmlDoc.getElementsByTagName("SKU")[msgID].firstChild.nodeValue;
document.forms[0].Price.value=xmlDoc.getElementsByTagName("PricePer")[msgID].firstChild.nodeValue;
document.forms[0].Quantity.value =xmlDoc.getElementsByTagName("Quantity")[msgID].firstChild.nodeValue;
document.forms[0].Total.value =xmlDoc.getElementsByTagName("Subtotal")[msgID].firstChild.nodeValue;
document.forms[0].Description.value =xmlDoc.getElementsByTagName("Description")[msgID].firstChild.nodeValue;
}
</script>
</head>
<body>
<h2>XML Order Database</h2>
<form>
<table border="0">
<tr>
<td>SKU</td>
<td><input type="text" name="SKU" id="SKU"></td>
</tr>
<tr>
<td>Price</td>
<td><input type="text" name="Price" id="Price"></td>
</tr>
<tr>
<td>Quantity</td>
<td><input type="text" name="Quantity" id="Quantity"></td>
</tr>
<tr>
<td>Total</td>
<td><input type="text" name="Total" id="Total"></td>
</tr>
<tr>
<td>Description</td>
<td><input type="text" name="Description" id="Description"></td>
</tr>
</table>
<input type="button" value=" << " onClick="getDataPrev();">
<input type="button" value=" >> " onClick="getDataNext();">
</form>

<p><span id="alert" style="color:red"></span></p>
</body>
<html>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章