js 如何读取xml文档内容

JavaScript034

js 如何读取xml文档内容,第1张

先判断浏览器,然后读取xml数据就可以了

//判断不同的浏览器

function InitMf()

{

var mf_change=false

try {

mf_change = new ActiveXObject("Msxml2.XMLHTTP")

} catch (e) {

try {

mf_change = new ActiveXObject("Microsoft.XMLHTTP")

} catch (E) {

mf_change = false

}

}

if (!mf_change &&typeof XMLHttpRequest!='undefined') {

mf_change = new XMLHttpRequest()

}

return mf_change

}

读取数据

var xmlHttp = InitMf()

var HTML = ""

//获得xml文件

xmlHttp.open("GET", xmlfile+"?"+Math.random(), true)

// 设置处理服务器的JS函数,函数又 xmlHttp.onreadystatechange来确定

xmlHttp.onreadystatechange=function() {

//alert(xmlHttp.status)

if (xmlHttp.readyState==4 &&xmlHttp.status==200) {

//ajax的XML传输的解析。获取解析的数据

var xml = xmlHttp.responseXML

var node = xml.getElementsByTagName("item")//获得总结点

for(var i = 0 i <node.length i++){

var str_t = ""

var str_d = ""

var menuHTML = ""

var elem = node[i]

//下面开始获得子节点数据,当然可以继续循环,获得更下面的节点

var title = elem.getElementsByTagName("title")[0].textContent != undefined ? elem.getElementsByTagName("title")[0].textContent : elem.getElementsByTagName("title")[0].text

这些只是部分代码,不过已经足够了

js读取xml文件跨域 问题,可以使用以下几种方法:

1 通过jsonp跨域 : 在js中,我们直接用XMLHttpRequest请求不同域上的数据时,是不可以的。但是,在页面上引入不同域上的js脚本文件却是可以的,jsonp正是利用这个特性来实现的。代码如下:

2  通过修改document.domain来跨子域:有一个页面,它的地址是http://www.example.com/a.html  , 在这个页面里面有一个iframe,它的src是http://example.com/b.html, 很显然,这个页面与它里面的iframe框架是不同域的 ;document.domain就可以派上用场了,我们只要把http://www.example.com/a.html 和 http://example.com/b.html这两个页面的document.domain都设成相同的域名就可以了

3 使用window.name来进行跨域 : 每个页面对window.name都有读写的权限,window.name是持久存在一个窗口载入过的所有页面

先判断浏览器,然后读取xml数据就可以了

//判断不同的浏览器

function InitMf()

{

var mf_change=false

try {

mf_change = new ActiveXObject("Msxml2.XMLHTTP")

} catch (e) {

try {

mf_change = new ActiveXObject("Microsoft.XMLHTTP")

} catch (E) {

mf_change = false

}

}

if (!mf_change &&typeof XMLHttpRequest!='undefined') {

mf_change = new XMLHttpRequest()

}

return mf_change

}

读取数据

var xmlHttp = InitMf()

var HTML = ""

//获得xml文件

xmlHttp.open("GET", xmlfile+"?"+Math.random(), true)

// 设置处理服务器的JS函数,函数又 xmlHttp.onreadystatechange来确定

xmlHttp.onreadystatechange=function() {

//alert(xmlHttp.status)

if (xmlHttp.readyState==4 &&xmlHttp.status==200) {

//ajax的XML传输的解析。获取解析的数据

var xml = xmlHttp.responseXML

var node = xml.getElementsByTagName("item")//获得总结点

for(var i = 0 i <node.length i++){

var str_t = ""

var str_d = ""

var menuHTML = ""

var elem = node[i]

//下面开始获得子节点数据,当然可以继续循环,获得更下面的节点

var title = elem.getElementsByTagName("title")[0].textContent != undefined ? elem.getElementsByTagName("title")[0].textContent : elem.getElementsByTagName("title")[0].text

这些只是部分代码,不过已经足够了