Javascript无法生成包含XML信息的div。(xml初学者)

Javascript无法生成包含XML信息的div。(xml初学者),javascript,html,xml,Javascript,Html,Xml,我正在尝试创建一个脚本,该脚本将根据所需XML文件的信息生成div。问题是我的脚本根本不起作用。我所做的是在w3schools.org上找到代码,并对其进行了一些修改,使其符合我的要求 结果是: <script type="text/javascript"> if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); }

我正在尝试创建一个脚本,该脚本将根据所需XML文件的信息生成div。问题是我的脚本根本不起作用。我所做的是在w3schools.org上找到代码,并对其进行了一些修改,使其符合我的要求

结果是:

<script type="text/javascript">
if (window.XMLHttpRequest)
{ // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
}
else
{ // code for IE6, IE5
   xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","products.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML; 

var size=0;
var i=0;
var x=xmlDoc.getElementsByTagName("honey");
var y=x.length;
var final=null;

function gethoney()
{
   for (i < y) 
   { 
     a1='<div style="height:200px;width:300px;float:left;background-color:#FFF5CC;opacity:0.7;text-align:center;">';
     a2='<p><b>';
     a3=(x[i].getElementsByTagName("name")[0].childNodes[0].nodeValue);
     a4='<br>';
     a5=(x[i].getElementsByTagName("price")[0].childNodes[0].nodeValue);
     a6='</br></b></p>';
     a8='</div>';
     a9='<div style="height:200px;width:20px;float:left;"></div>';
     a10='<div style="height:200px;width:100px;float:left;">';
     a11=(x[i].getElementsByTagName("image")[0].childNodes[0].nodeValue);
     a12='</div>';
     final=final + a1 + a2 + a3 + a4 + a5 + a6 + a8 + a9 + a10 + a11 + a12;
     size=size+300;
     i=i+1;
   }
document.getElementById("mainbody").style.height=size;
size=size-20;
document.getElementById("products").style.height=size;
document.getElementById("products").innerHTML=final;
}
</script>

if(window.XMLHttpRequest)
{//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
其他的
{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
open(“GET”,“products.xml”,false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
变量大小=0;
var i=0;
var x=xmlDoc.getElementsByTagName(“蜂蜜”);
var y=x.长度;
var final=null;
函数gethoney()
{
对于(i”;
a5=(x[i].getElementsByTagName(“价格”)[0].childNodes[0].nodeValue);
a6=“

”; a8=''; a9=''; a10=''; a11=(x[i].getElementsByTagName(“图像”)[0].childNodes[0].nodeValue); a12=''; 最终=最终+a1+a2+a3+a4+a5+a6+a8+a9+a10+a11+a12; 尺寸=尺寸+300; i=i+1; } document.getElementById(“主体”).style.height=大小; 尺寸=尺寸-20; document.getElementById(“产品”).style.height=大小; document.getElementById(“产品”).innerHTML=final; }
使用final保存每个div对我来说似乎不是一个理想的方法,但我还是做到了

XML是这样的:

<?xml version="1.0" encoding="windows-1252"?>
<honey>
   <name>one</name>
   <price>3</price>
   <image><img src=""></img></image>
   <disc>This is a honey</disc>
</honey>
<honey>
   <name>one</name>
   <price>3</price>
   <image><img src=""></img></image>
   <disc>This is a honey</disc>
</honey>
etc etc

一
3.
这是蜂蜜
一
3.
这是蜂蜜
等等
我试图找到这方面的信息,但没有任何运气。有人能指出我做错了什么并提出改进/纠正建议吗?另外,如果有人能写下生成div的方法,而不使用final保存div,然后使用innerHTML,我们将不胜感激。

1)您的xml文件不是xml

2) 更改此项:

xmlDoc=xmlhttp.responseXML; 
为此:

xmlDoc = xmlhttp.responseXML.documentElement; 
(二)


您的XML文件无效:它只能包含1个根标记。将您的
标记包装在一个标记内。不添加一个根标记是我方面的一个巨大错误,我已经修复了这个错误,但这并不能完全解决所有问题。现在它工作得很好!我为(xYes)更改了
,gethoney()中的代码试图获取标记的开始和结束属性之间的内容,因此x[0]。getElementsByTagName(“img”)[0]。getAttribute('src')“我输入的内容完全错误”,如果您自己构建xml文件,为什么不使用类似于:
http://website.com/images/flower.jpg
for (i < y) 
console.log("==>" + xmlDoc[0].getElementsByTagName("name")[0].childNodes[0].nodeValue);