雖然現(xiàn)在文件傳輸?shù)姆绞街髁鞯氖怯肑SON伊滋,但是最近工作中用到了XML的文件讀取,這個(gè)問題折騰了好一會(huì)元莫,記錄一下成功突破的方法蓄愁。
讀取XML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="https://cdn.bootcss.com/jquery/2.2.2/jquery.min.js"></script>
</head>
<body>
<p>測(cè)試讀取方法!</p>
<script>
function loadXML() {
console.log("正在讀取");
var xmlDoc;
try { //IE瀏覽器
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
} catch (e) { //firefox,opera...火狐贾节、歐朋等瀏覽器
xmlDoc = document.implementation.createDocument("", "", null);
}
try {
xmlDoc.asyc = false; //是否異步調(diào)用
xmlDoc.load("./equipment.xml"); //文件路徑
} catch (e) { //chrome
var xmlhttp = new window.XMLHttpRequest();
//創(chuàng)建一個(gè)新的http請(qǐng)求匣掸,并指定此請(qǐng)求的方法、URL以及驗(yàn)證信息
xmlhttp.open("GET", "./equipment.xml", false);
xmlhttp.send(null);
if (xmlhttp.readyState == 4) {
xmlDoc = xmlhttp.responseXML.documentElement;
}
}
console.log("讀取完成");
//console.log(xmlDoc);
return xmlDoc;
}
</script>
<script>
var xmlDoc = loadXML();//調(diào)用該方法即讀取出來
//... do anything you want
}
</script>
</body>
</html>
XML文件
<?xml version="1.0" encoding="utf-8"?>
<equipmentstore>
<equipment>
<category>Web_server</category>
<id>00001</id>
<position_x>200</position_x>
<position_y>200</position_y>
<shape/>
<link>00002</link>
</equipment>
<equipment>
<category>router</category>
<id>00002</id>
<position_x>400</position_x>
<position_y>400</position_y>
<shape/>
<link>00001</link>
<link>00003</link>
</equipment>
<equipment>
<category>router</category>
<id>000003</id>
<position_x>600</position_x>
<position_y>200</position_y>
<shape/>
<link>00002</link>
</equipment>
</equipmentstore>
爬坑指南
如果使用Chrome瀏覽器的話氮双,即使你把以上的代碼如法炮制碰酝,你還是無法讀取到XML文件,在調(diào)試控制臺(tái)會(huì)報(bào)錯(cuò):
svg.html:32 Failed to load file:///.../xx.xml: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.
Uncaught DOMException: Failed to execute 'send' on 'XMLHttpRequest': Failed to load '.../xxx.xml'.
//反正就是死活讀取不到
主要是因?yàn)镃hrome瀏覽器的安全機(jī)制問題戴差,并且使用到http請(qǐng)求送爸,不允許讀取本地XML文件,解決辦法是將其運(yùn)行在服務(wù)器端暖释。我這里將其放在了Tomcat上去跑袭厂,即使用Tomcat運(yùn)行靜態(tài)文件。在Tomcat的webapp文件夾下新建一個(gè)test文件夾球匕,把靜態(tài)文件放在里面纹磺,然后運(yùn)行Tomcat,瀏覽器訪問 localhost:8080/test/xxx.html
cd Tomcat的文件路徑/bin
./startup.sh //運(yùn)行
./shutdown.sh //停止
網(wǎng)站與 個(gè)人博客 同步更新,歡迎點(diǎn)擊