javascript读取xml文件

什么是 XML?

  • XML 指可扩展标记语言(EXtensible Markup Language)
  • XML 是一种标记语言,很类似 HTML
  • XML 的设计宗旨是传输数据,而非显示数据
  • XML 标签没有被预定义。您需要自行定义标签。
  • XML 被设计为具有自我描述性。
  • XML 是 W3C 的推荐标准

XML文件

<note>
    <id>1</id>
    <name>SevenNight</name>
    <sex></sex>
    <style>12</style>
</note>

1、把 XML 文档解析到 XML DOM 对象中:

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","Test.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;

//读取节点
xmlDoc.getElementsByTagName("id")[0].childNodes[0].nodeValue;

xmlDoc.getElementsByTagName("name")[0].childNodes[0].nodeValue;

xmlDoc.getElementsByTagName("sex")[0].childNodes[0].nodeValue;

xmlDoc.getElementsByTagName("style")[0].childNodes[0].nodeValue;

跨域访问

出于安全方面的原因,现代的浏览器不允许跨域的访问。

这意味着,网页以及它试图加载的 XML 文件,都必须位于相同的服务器上、同一域上

假如你打算在自己的网页上使用上面的例子,则必须把 XML 文件放到自己的服务器上。否则,xmlDoc.load() 将产生错误 "Access is denied"。

如果想不再同一域上能访问,还可以在服务器相应头设置允许跨域访问

//表示任何网站都可以请求
response.setHeader("Access-Control-Allow-Origin", "*");

//表示只有http://www.baidu.com能请求
response.setHeader("Access-Control-Allow-Origin", "http://www.baidu.com");

访问响应信息

HTTP/1.1 200 OK
Set-Cookie: AO="o=1&s=1&dnt=1"; Version=1; Domain=yahoo.com; Max-Age=630720000; Expires=Sat, 18-Jun-2033 10:07:41 GMT; Path=/
Access-Control-Allow-Origin: *    //表示允许跨域的相应头
Cache-Control: public, max-age=899
Content-Type: text/xml;charset=utf-8
Content-Encoding: gzip
Vary: Accept-Encoding
Date: Sun, 23 Jun 2013 10:07:40 GMT

在html中,可以设置

<meta http-equiv="Access-Control-Allow-Origin" content="*">
<meta http-equiv="Access-Control-Allow-Origin" content="http://www.baidu.com">
原文地址:https://www.cnblogs.com/cnsevennight/p/3946096.html