var xmlDoc=new ActiveXObject(“Microsoft.XMLDOM”)
xmlDoc.async=“false”//同步加载方式
xmlDoc.load(“note.xml”)//加载文件
var txt ="<root>aaa</root>"
xmlDoc.loadXML(txt)//加载xml格式字符串
其他浏览器
//加载文件
var xmlDoc=document.implementation.createDocument(“”,“”,null)
xmlDoc.async=“false”
xmlDoc.load(“note.xml”)
//加载xml格式字符串
var txt ="<root>aaa</root>"
var parser=new DOMParser()
var doc=parser.parseFromString(txt,"text/xml")
跨浏览器访问是禁止的,xml文档与加载他的文件应该在同一个域名下
xml解析器加载xml文件或字符串后返回一个xml文档对象,然后可以使用该对象调用xml相关解析方法对加载的xml数据进行解析
1、用 childNodes 属性,按顺序取
实现过程:首先创建一个 xml 对象,然后载入 xml 文件,再根据待取节点父节点在 xml 文件中的序号和本身的序号,确定待取节点的位置,最后返回待取节点的值。
//pId 待取节点父节点序号
//cId 待取节点序号
function getXmlNodeValue(pId, cId) {var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async = false
xmlDoc.load("employeeInfo.xml")
var nodes = xmlDoc.documentElement.childNodes[pId].childNodes[cId]return nodes.childNodes[0].text
}
调用方法:alert(getXmlNodeValue(1, 2))
2、用 for 循环来取
实现过程:首先创建一个 ie 支持的 xml 对象,如果发生异常,是创建一个 FireFox 支持的空 xml 对象并返回空;然后载入 xml 文件,如要发生异常也返回空;最后,通过 for 循环遍历查找与传入的节点值相同的节点,找到后返回属于该节点的属性值。
//nodeValue 待取节点的所属节点值
function getXmlNodeValueFor(nodeValue){var xmlDoc
try {
//创建一个 ie 支持的 XML 文档对象
xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
}catch(e){
try{
//创建FireFox空的XML文档对象
xmlDoc=document.implementation.createDocument("","",null)
}catch(e){
alert(e.message)
return ""
}
}
xmlDoc.async = false
try {
xmlDoc.load("employeeInfo.xml")
}catch(e){
alert(e.message)
return ""
}
var xd=xmlDoc.documentElement.childNodes
if(xd==null)
return ""
var tempValue
for(var i=0i<xd.lengthi++){
if(xd[i].childNodes[0].childNodes[0].nodeValue==nodeValue) tempValue=xd[i].childNodes[2].childNodes[0].nodeValue
}
return tempValue
}
调用方法:alert(getXmlNodeValueFor("王佳琳"))
请把下面的代码保存为 readxml.html
<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>
请把下面的文件保存未 note.xml
<?xml version="1.0" encoding="ISO-8859-1"?><note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>