0

我很抱歉这个问题,但我是第一次这样做

这是我用于加载 xml 文件的 loadxml.js 文件

 function loadXMLDoc(dname)
 {
 if (window.XMLHttpRequest)
   {
   xhttp=new XMLHttpRequest();
   }
 else
   {
   xhttp=new ActiveXObject("Microsoft.XMLHTTP");
   }

 xhttp.onreadystatechange=function()
  {
  if (xhttp.readyState==4 && xmlhttp.status==200)
    {
    return xhttp.responseXML;
    }
  }

xhttp.open("GET",dname, true);

xhttp.send();


 } 

现在这是我使用 javascript 的 html 文件我尝试提取节点

<!DOCTYPE html>

<html>

<head>

<script src="loadxmldoc.js">
</script>

</head>

<body>

<script>


xmlDoc=loadXMLDoc("books.xml");



document.write(xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue + "<br>");

document.write(xmlDoc.getElementsByTagName("author")[0].childNodes[0].nodeValue + "<br>");

document.write(xmlDoc.getElementsByTagName("year")[0].childNodes[0].nodeValue);
</script>

</body>

</html>

这是xml文件

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore> 
 <book category="cooking">
   <title lang="en">Everyday Italian</title> 
   <author>Giada De Laurentiis</author> 
   <year>2005</year> <price>30.00</price> 
 </book> -
 <book category="children"> 
   <title lang="en">Harry Potter</title> 
   <author>J K. Rowling</author> 
   <year>2005</year> 
   <price>29.99</price> 
 </book> 
 <book category="web"> 
   <title lang="en">XQuery Kick Start</title> 
   <author>James McGovern</author> 
   <author>Per Bothner</author> 
   <author>Kurt Cagle</author> 
   <author>James Linn</author> 
   <author>Vaidyanathan Nagarajan</author> 
   <year>2003</year> 
   <price>49.99</price> 
 </book> 
 <book category="web" cover="paperback"> 
  <title lang="en">Learning XML</title>
  <author>Erik T. Ray</author> 
  <year>2003</year> 
  <price>39.95</price> 
 </book> 
</bookstore>
4

2 回答 2

0

您正在执行异步请求。附加处理程序或使其同步以进行调试。

xhttp.open("GET",dname,false);

或者更好地使用处理程序:

xhttp.open("GET",dname,true);
xhttp.onreadystatechange = function(){
    if(xhttp.readyState == 4){
        if(xhttp.status == 200)
            console.log(req.responseText);
         else
            console.log('Error getting data') ;
    }
}
xhttp.send(null);
return xhttp.responseXML;
于 2012-12-14T10:49:24.730 回答
0

我建议您使用 jQuery,因为它会为您完成大部分工作。

$.ajax({
  url: 'ajax/test.html',
  success: function(data) {
    $('.result').html(data);
    alert('Load was performed.');
  }
});
于 2012-12-14T14:29:41.157 回答