XML學習筆記(三)--- 通過JavaScript解析XML

以下內容多爲筆者在菜鳥教程中的摘抄,主要用於個人學習,如侵權請聯繫我刪除

XML解析器

XML 解析器把 XML 文檔轉換爲 XML DOM 對象 - 可通過 JavaScript 操作的對象。

解析XML文檔

if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
	//創建一個XMLHttpRequest用於網絡通信
	xmlhttp=new XMLHttpRequest();
}
else
{	// code for IE6, IE5
	xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","books.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;

解析XML字符串
通過一個String進行拼接:

txt="<bookstore><book>";
txt=txt+"<title>Everyday Italian</title>";
txt=txt+"<author>Giada De Laurentiis</author>";
txt=txt+"<year>2005</year>";
txt=txt+"</book></bookstore>";

if (window.DOMParser)
{
	parser=new DOMParser();
	xmlDoc=parser.parseFromString(txt,"text/xml");
}
else // Internet Explorer
{
	xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
	xmlDoc.async=false;
	xmlDoc.loadXML(txt);
}

XML DOM(Document Object Model)

  1. 定義了訪問和操作文檔的標準方法
  2. 一個解析的實例:
<html>
<body>
<h1>W3Schools Internal Note</h1>
<div>
<b>To:</b> <span id="to"></span><br />
<b>From:</b> <span id="from"></span><br />
<b>Message:</b> <span id="message"></span>
</div>

<script>
txt="<note>";
txt=txt+"<to>Tove</to>";
txt=txt+"<from>Jani</from>";
txt=txt+"<heading>Reminder</heading>";
txt=txt+"<body>Don't forget me this weekend!</body>";
txt=txt+"</note>";

if (window.DOMParser)
{
	parser=new DOMParser();
	xmlDoc=parser.parseFromString(txt,"text/xml");
}
else // Internet Explorer
{
	xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
	xmlDoc.async=false;
	xmlDoc.loadXML(txt);
}

//通過DOM獲取解析後的XML的值
document.getElementById("to").innerHTML=xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue;
document.getElementById("from").innerHTML=xmlDoc.getElementsByTagName("from")[0].childNodes[0].nodeValue;
document.getElementById("message").innerHTML=xmlDoc.getElementsByTagName("body")[0].childNodes[0].nodeValue;
</script>
</body>
</html>
  1. 通過XML解析的數據實現一個HTML界面:
<html>
<body>

<script>
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","cd_catalog.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;

document.write("<table border='1'>");
var x=xmlDoc.getElementsByTagName("CD");
for (i=0;i<x.length;i++)
{
document.write("<tr><td>");
document.write(x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue);
document.write("</td><td>");
document.write(x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue);
document.write("</td></tr>");
}
document.write("</table>");
</script>

</body>
</html>

運行結果如下:
在這裏插入圖片描述
通過XML和JavaScript構成一個基本的網頁應用
源代碼如下:

<!DOCTYPE html>
<html>
<head>

<script>
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("GET","cd_catalog.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML; 

x=xmlDoc.getElementsByTagName("CD");
i=0;

//用於在前端Server中獲取所有CD的內容
function displayCD()
{
	artist=(x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue);
	title=(x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue);
	year=(x[i].getElementsByTagName("YEAR")[0].childNodes[0].nodeValue);
	txt="Artist: " + artist + "<br>Title: " + title + "<br>Year: "+ year;
	document.getElementById("showCD").innerHTML=txt;
}

function next()
{
if (i<x.length-1)
  {
  i++;
  displayCD();
  }
}

function previous()
{
if (i>0)
  {
  i--;
  displayCD();
  }
}
</script>
</head>
//在加載的時候就獲取所有CD的內容
<body onload="displayCD()">

<div id='showCD'></div><br>
// 用於獲取兩個按鈕,並且得到相應的函數功能
<input type="button" onclick="previous()" value="<<" />
<input type="button" onclick="next()" value=">>" />

</body>
</html>

實現效果如下:
在這裏插入圖片描述
通過點擊左右按鈕可以切換CD

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章