亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > XML > 正文

Xml學習筆記(二)Javascript篇

2024-09-05 20:54:45
字體:
來源:轉載
供稿:網友

一、XML解析器(Parser)

所有的現代瀏覽器都會內建一個XML解析器(Parser)來讀取和操作XML。Parser將XML讀入內存中將之轉換為一個DOM(Documnet Object Model)對象。我們可以使用JavaScript存取到這個對象。(備注,Microsoft的Parser可以加載XML文件和字符串中的XML內容,而其他的一些Browser則分別使用不同的Parser去實現。)所有的Parser都可以遍歷XML樹,讀取、插入、刪除節點(elements)和attribute。在談論XML解析時,我們是用Nodes(節點)來代替Elements(元素)。

一般我們會從兩個地方加載XML:XML文件或者包含XML的string(字符串)。

使用MicrosoftParser加載XML文件
var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("note.xml");
 
使用Parser讀取保存在string(字符串)中的XML內容
var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.loadXML(txt);

注意以上是使用同一個對象的不同方法去實現的。其他的Browser則是用不同的對象去實現。
var xmlDoc=document.implementation.createDocument("","",null);
xmlDoc.async="false";
xmlDoc.load("note.xml");

var parser=new DOMParser();
var doc=parser.parseFromString(txt,"text/xml");

二、XML DOM

DOM(Document Object Model)定義了一種標準的方式去存取和操作XML文件。DOM將XML視作一個樹結構。通過DOM可以增加、修改、刪除Element,同時可以修改包括Element的Attribute和Element包含的內容(text)。我們將一個Element及其包含的所有東西(Attribute、Text)稱作一個Node。

以下是讀取<to>的節點的語句:
xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue
和用HTML的DOM讀取一個id="to"的語句比較可以看到很多相似之處:
document.getElementById("to").innerHTML
(更多有關的DOM內容,可以參考XML DOM指南)

下面是一個完整的例子。用JavaScript從一個XML文件中讀取內容,顯示到HTML中。以下代碼是跨瀏覽器的。已經考慮到不同瀏覽器的問題。

<html>
<head>
<script type="text/javascript">
function parseXML()
{
try
{//try IE first
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
}
catch(e)
{
try
{//try Mozilla, Firefox, Opera, etc.
xmlDoc=document.implementation.createDocument("","",null);
}
catch(e)
{
alert(e.message);
return;
}
}
xmlDoc.async=false;
xmlDoc.load("note.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>
</head>

<body onload="parseXML()">
<h1>W3Schools Internal Note</h1>
<p><b>T</b> <span id="to"></span><br />
<b>From:</b> <span id="from"></span><br />
<b>Message:</b> <span id="message"></span>
</p>
</body>
</html>

然后下面這個例子可以快速瀏覽甚至略過,和上面代碼的區別,緊緊是先把XML存到一個string中,然后再用Parser把XML從string中讀出來。
 

<html>
<head>
<script type="text/javascript">
function parseXML()
{
var text="<note>";
text=text+"<to>Tove</to>";
text=text+"<from>Jani</from>";
text=text+"<heading>Reminder</heading>";
text=text+"<body>Don't forget me this weekend!</body>";
text=text+"</note>";
try
{// code for IE
var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.loadXML(text);
}
catch(e)
{// code for Mozilla, Firefox, Opera, etc.
try
{
var parser=new DOMParser();
var xmlDoc=parser.parseFromString(text,"text/xml");
}
catch(e)
{
alert(e.message);
return;
}
}
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>
</head>

<body onload="parseXML()">
<h1>W3Schools Internal Note</h1>
<p><b>T</b> <span id="to"></span><br />
<b>From:</b> <span id="from"></span><br />
<b>Message:</b> <span id="message"></span>
</p>
</body>
</html>
 


 

三、XML to HTML

指南中給出例子的思路就是一邊用XML DOM讀取XML的內容,一邊不停的用document.write寫HTML標記和讀取到的XML內容。和上面的例子差不多,就不再轉貼代碼了。

四、XMLHttpRequestObject

這個東西很厲害啊,大名鼎鼎的Ajax就是從這東西變出來的。

什么是XMLHttpRequestObject?XMLHttpRequestObject是開發人員的夢,因為有了它,你就可以:
  • 為網頁增加新數據而無需重新加載頁面。
  • 在網頁加載后向Server請求數據。
  • 在網頁加載后從Server接受數據。
  • 在后臺向Server傳送數據。
其實以上說的都是一回事,關鍵三個字“無刷新”。

馬上看一個例子:

<html>
<head>
<script type="text/javascript">
var xmlhttp;
function loadXMLDoc(url)
{
xmlhttp=null;
if (window.XMLHttpRequest)
{// code for IE7, Firefox, Opera, etc.
xmlhttp=new XMLHttpRequest();
}
else if (window.ActiveXObject)
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
if (xmlhttp!=null)
{
xmlhttp.onreadystatechange=state_Change;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}
else
{
alert("Your browser does not support XMLHTTP.");
}
}

function state_Change()
{
if (xmlhttp.readyState==4)
{// 4 = "loaded"
if (xmlhttp.status==200)
{// 200 = "OK"
document.getElementById('A1').innerHTML=xmlhttp.status;
document.getElementById('A2').innerHTML=xmlhttp.statusText;
document.getElementById('A3').innerHTML=xmlhttp.responseText;
}
else
{
alert("Problem retrieving XML data:" + xmlhttp.statusText);
}
}
}
</script>
</head>

<body>
<h2>Using the HttpRequest Object</h2>

<p><b>Status:</b>
<span id="A1"></span>
</p>

<p><b>Status text:</b>
<span id="A2"></span>
</p>

<p><b>Response:</b>
<br /><span id="A3"></span>
</p>

<button onclick="loadXMLDoc('note.xml')">Get XML</button>

</body>
</html>

以上的代碼是在button的onClick中讀取一個xml文件的內容然后進行顯示。這里要強調的是:這里并不是把隱藏的內容顯示出來而是確實從Server的XML讀取到數據然后作顯示的,而且是無刷新的。可以到這個網址去體現一下http://www.w3schools.com/xml/tryit.asp?filename=tryxml_httprequest_js。
Open的true是表示是否進行異步操作,true表示script繼續運行而不必等待Server的應答。了解更多的XMLHttpRequest對象,可以到網上查找一下XMLHttp的CHM文檔。 注意XMLHttpRequest對象并不是W3C標準建議的。

五、總結

柔合以上的知識就可以使用JavaSripte靈活的讀寫XML了。在這里我們用到了多種的的Web技術,包括:
  • HTML和HTML DOM
  • XML和XML DOM
  • JavaScript
  • XMLHttp相關對象 
 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久国产视频91| 69影院欧美专区视频| 国产免费一区二区三区香蕉精| 91在线免费视频| 亚洲国产成人91精品| 国产免费一区二区三区在线观看| 日韩国产在线看| 福利视频一区二区| 欧美日韩xxx| 亚洲最大av网| 亚洲国产精品悠悠久久琪琪| 黑人巨大精品欧美一区免费视频| 国产成人鲁鲁免费视频a| 综合av色偷偷网| 青青在线视频一区二区三区| 国产精品福利在线| 国产美女主播一区| 岛国av一区二区在线在线观看| 国产成人97精品免费看片| 亚洲欧洲日韩国产| 国产精品视频xxxx| 久久久国产一区二区| 久久亚洲影音av资源网| 国产免费成人av| 国产精品亚洲综合天堂夜夜| 欧美日本精品在线| 成人免费网站在线观看| 中文字幕九色91在线| 欧美日韩国产一区二区三区| 国产精品久久久久久久久久三级| 中文欧美日本在线资源| 欧美日韩免费区域视频在线观看| 51精品国产黑色丝袜高跟鞋| 91夜夜未满十八勿入爽爽影院| 成人高清视频观看www| 国产一区二区激情| 欧美裸体视频网站| 亚洲精品视频在线播放| 亚洲国产欧美一区二区三区久久| 欧美激情极品视频| 亚洲天堂av图片| 久久91亚洲精品中文字幕奶水| 国产一区二区香蕉| 精品一区精品二区| 国产成人精品久久亚洲高清不卡| 亚洲天堂av在线播放| 亚洲成人国产精品| 日韩精品视频在线观看网址| 91高清免费视频| 亚洲加勒比久久88色综合| 久久久成人的性感天堂| 91色精品视频在线| 欧美福利小视频| 久久视频中文字幕| 欧美国产激情18| 色偷偷噜噜噜亚洲男人的天堂| 久久久成人精品视频| 91美女福利视频高清| 92福利视频午夜1000合集在线观看| 国产亚洲欧洲高清| 国产精品美女久久久免费| 中文字幕精品—区二区| 美女国内精品自产拍在线播放| 欧美性xxxxhd| 91久久精品国产| 欧美日韩不卡合集视频| 综合欧美国产视频二区| 国产精品高清在线| 91中文字幕在线| 成人黄色网免费| 欧美激情在线观看视频| 欧美自拍视频在线| 国产亚洲成av人片在线观看桃| 精品久久久久久| 日本一区二三区好的精华液| 亚洲乱码一区av黑人高潮| 国产美女扒开尿口久久久| 国产精品91久久| 久久亚洲精品国产亚洲老地址| 国产这里只有精品| 国产精品久久久久久久久久小说| 日韩精品极品视频免费观看| 午夜欧美不卡精品aaaaa| 18一19gay欧美视频网站| 日韩美女av在线免费观看| 国产精品久久久久久av下载红粉| 国产精品白嫩初高中害羞小美女| 久久久久国色av免费观看性色| 久久久午夜视频| 57pao国产成人免费| 国产日韩精品在线播放| 亚洲精品电影网| 国产精品视频精品视频| 国产91色在线播放| xxxxx成人.com| 国产99视频在线观看| 91po在线观看91精品国产性色| 国产亚洲欧美视频| 91亚洲精品在线观看| 午夜精品99久久免费| 精品露脸国产偷人在视频| 韩国三级电影久久久久久| 日韩成人av在线播放| 第一福利永久视频精品| 最新的欧美黄色| 亚洲石原莉奈一区二区在线观看| 日韩在线观看免费高清| 欧美日本黄视频| 日韩在线小视频| 色七七影院综合| 深夜福利91大全| 久久午夜a级毛片| 国产精品露脸av在线| 日韩激情视频在线| 日本一区二区三区四区视频| 欧美在线视频在线播放完整版免费观看| 一区二区三区视频免费在线观看| 久久天天躁狠狠躁老女人| 亚洲精品资源在线| 正在播放欧美一区| 欧美精品在线观看| 欧洲中文字幕国产精品| 亚洲国产精品电影| 中文字幕精品www乱入免费视频| 91精品免费视频| 九九热精品视频国产| 成人国产精品一区| 国产亚洲a∨片在线观看| 久久国产精品久久久久久| 中文字幕亚洲综合久久筱田步美| 色中色综合影院手机版在线观看| 日韩免费黄色av| 91在线观看免费高清完整版在线观看| 91大神在线播放精品| 日韩人体视频一二区| 欧美日韩一区二区在线播放| 国模吧一区二区三区| 日韩欧美在线视频观看| 一区二区欧美日韩视频| 精品亚洲va在线va天堂资源站| 欧美高清在线观看| 久久视频在线播放| 成人性生交大片免费观看嘿嘿视频| 精品久久久久久| 国产精品一区二区在线| 欧美与黑人午夜性猛交久久久| 亚洲成年人在线播放| 搡老女人一区二区三区视频tv| 亚洲aaaaaa| 91精品啪在线观看麻豆免费| 欧美成人在线网站| 亚洲免费av电影| 亚洲精品永久免费| 91精品国产91久久久久久久久| 国产精品视频一区二区高潮| 国产精品高清在线观看| 久久夜色精品国产欧美乱| 久久这里只有精品99| 久久久久久尹人网香蕉| 国产亚洲精品综合一区91| 亚洲色图av在线| 成人在线观看视频网站| 欧美在线性爱视频| 欧美国产日韩在线|