html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3c.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3c.org/1999/xhtml">
<head>
<title>Parsing XML Response with the W3C DOM</title>
<script language="javascript">
var xmlHttp;
var requestType = "";
function createXMLHttpRequest()
{
if(window.ActiveXObject)
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)
{
xmlHttp = new XMLHttpRequest();
}
}
function startRequest(requestedList)
{
requestType = requestedList;
createXMLHttpRequest();
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.open("GET","parseXML.xml",true);
xmlHttp.send(null);
}
function handleStateChange()
{
if(xmlHttp.readyState == 4)
{
if(xmlHttp.status == 200||xmlHttp.status == 0)
{
if(requestType == "north")
{
listNorthStates();
}
else if(requestType == "all")
{
listAllStates();
}
}
}
}
function listNorthStates()
{
var xmlDoc = xmlHttp.responseXML;
var northNode = xmlDoc.getElementsByTagName("north")[0];
var northStates = northNode.getElementsByTagName("state");
alert("jinru");
outputList("Northern States",northStates);
}
function listAllStates()
{
var xmlDoc = xmlHttp.responseXML;
var allStates = xmlDoc.getElementsByTagName("state");
outputList("All States in Document",allStates);
}
function outputList(title,states)
{
var out = title;
var currentState = null;
for(var i = 0;i<states.length;i++)
{
currentState = states[i];
out = out+"\n-"+currentState.childNodes[0].nodeValue;
}
alert(out);
}
</script>
</head>
<body>
<form action="#">
<input type="button" value="北部" onclick="startRequest('north');"/><br/>
<input type="button" value="全部" onclick="startRequest('all');"/>
</form>
</body>
</html>
xml:
<?xml version="1.0" encoding="UTF-8"?>
<states>
<north>
<state>liaoning</state>
<state>jilin</state>
</north>
<south>
<state>guangdong</state>
<state>guangxi</state>
</south>
<west>
<state>ganshu</state>
<state>qinghai</state>
</west>
<east>
<state>jiangsu</state>
<state>zhejiang</state>
</east>
</states>
找不到xml中的元素?

解决方案 »

  1.   

    初学也搞这么复杂
    if(xmlHttp.readyState == 4){
    if(xmlHttp.status == 200||xmlHttp.status == 0){
    var result=xmlHttp.responseXML;
    alert(result);//如果这儿有数据的话再往下进行
    alert(result.getElementsByTagName("states").childNodes[0]);
    }
    }
      

  2.   

    result是object 可下一级就取不到了 我试了好多方法
      

  3.   

    var res=XMLHttpReq.responseXML.getElementsByTagName("states")[0].firstChild.data;
    alert(res);是不是编码的问题呢?
      

  4.   

    xmlHttp.responseXML应该是直接取到根元素,不用再getElementsByTagName("states")了,头疼,等待高手!
      

  5.   

    解决了,就是编码的问题,用UE不好使,放到eclipse里面就好了