在javascript中打印xml

时间:2014-06-01 10:26:54

标签: javascript xml dom

我尝试使用How to print pretty xml in javascript?的答案,但它对我的代码没有用。它打印[对象]。有没有办法在这个对象中打印xml?

<!DOCTYPE html>
<html>
<head>
<script src="loadxmldoc.js"></script>
</head>
<body>

<script>

var xmldoc= loadXMLDoc('skoly.xml');

var d = document.createElement('div'); 
var t = document.createTextNode(xmldoc); 
d.appendChild(t);
document.write('<pre>' + d.innerHTML + '</pre>');


</script>
</body>
</html>

loadxmldoc.is:

function loadXMLDoc(filename)
{
if (window.XMLHttpRequest)
  {
  xhttp=new XMLHttpRequest();
  }
else // code for IE5 and IE6
  {
  xhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xhttp.open("GET",filename,false);
xhttp.send();
return xhttp.responseXML;
}

1 个答案:

答案 0 :(得分:0)

responseXML属性将返回Document类型的对象(如果能够),否则null(请参阅https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#responseXML)。

如果您只是尝试使用返回的XML将其打印为文本,那么您最好只使用responseText对象上的xhttp属性,它将为您提供XML作为文本字符串(https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#responseText)。

您的loadxmldoc.js代码应该成为;

function loadXMLDoc(filename)
{
if (window.XMLHttpRequest)
  {
  xhttp=new XMLHttpRequest();
  }
else // code for IE5 and IE6
  {
  xhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xhttp.open("GET",filename,false);
xhttp.send();
return xhttp.responseText;
}

另外,作为旁注,我们并不建议使用同步XMLHttpRequests,因为这会阻止主线程。正如该文章(https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#open())中进一步解释的那样,这将从FF 30中弃用