<html>
<head><title>Test</title></head>
<script>
function getNodeValue(nodePath)
{
//change the data of which responsed by server.
var xml_data = "<root><node1>abcd</node1></root>";
try
{
//for IE
//create xmldom to manipulate xml object tree
var dom = new ActiveXObject("MSXML2.DOMDocument.5.0");
//for mozilla
//var dom = document.implementation.createDocument(xml_data,'root',null);
dom.async = false;
dom.loadXML(xml_data);
var nodeList = dom.documentElement.selectNodes(nodePath);
for (var i = 0; nodeList && i < nodeList.length; i++)
{
alert(nodeList[i].childNodes[0].text);
}
}
catch(err)
{
throw new Error("Please update the version of IE at lest 5.5");
}
}
</script>
<body onload="getNodeValue('/root/node1')">
</body>
</html>

解决方案 »

  1.   

    .......................
    var resp= xmlHttp.responseXml;
    var data= resp.getElementsByTagName("node1");
    alert(data[0].firstChild.nodeValue);
      

  2.   

    var data= resp.getElementsByTagName("node1");FireFox中可以。IE中为什么不行?
      

  3.   

    ok了,原来这个方法用的时候我是用ASP做后台的,在fireFox和IE中都没有问题。现在改用JSP就不行了,后来研究了一下,发现是响应的JSP页面的问题。
    原来的JSP页面是这样的<%@ page language="java" pageEncoding="gb2312"%>
    <%
    response.setHeader("pragma","no-cache");
    response.setHeader("cache-control","no-cache");
    response.setHeader("expires","0");
    response.setHeader("content-type","text/xml;charset=gb2312");
    out.println("<?xml version=\"1.0\" encoding=\"GB2312\"?>");
        out.println("<docroot><node1>中国</node1></docroot>");
    %>这样FireFox就会说"xml处理指令不在外部实体的开始部分" ,而IE就说是javascript错误云云。通过google和看JSP转换成的java文件,在文件开始处多了回车换行。改成下面的就可以了原来的JSP页面是这样的<%@ page language="java" pageEncoding="gb2312"%><%
    response.setHeader("pragma","no-cache");
    response.setHeader("cache-control","no-cache");
    response.setHeader("expires","0");
    response.setHeader("content-type","text/xml;charset=gb2312");
    out.println("<?xml version=\"1.0\" encoding=\"GB2312\"?>");
        out.println("<docroot><node1>中国</node1></docroot>");
    %>