我正在尝试提取此XML文件的信息,并在HTML文件的<p>
标记中显示其中的一些信息。
我的代码在这里:
打开(这只是为我的三种方式做准备的开场代码):
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","books.xml", false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;
star = xmlDoc.documentElement.childNodes;
y = xmlDoc.getElementsByTagName('book');
var container = document.getElementById('page-wrapper');
var v = parseInt(document.getElementById('input').value);
var autho = y[v - 1].getElementsByTagName('author');
选项1:
var text= [];
for (var i= 0, n= y[v-1].childNodes.length; i<n; i++) {
var child= element.childNodes[i];
if (child.nodeType===1 && child.tagName.toLowerCase()=='author')
text.push(getTextContentExceptScript(child));
else if (child.nodeType===3)
text.push(child.data);
}
return text.join('');
var pa = document.createElement("p");
var pt = document.createTextNode(text);
pa.appendChild(pt);
container.appendChild(pa);
选项2:
var a = 0;
while (a < autho.length)
{
var t = document.createTextNode(autho[a].textContent);
var d = document.createElement("p");
var e = document.createTextNode("Author: " + t);
d.appendChild(e);
container.appendChild(d);
a = a + 1;
}
选项3:
for(var k = 0; k < autho.length; k++)
{
var t = document.createTextNode(autho[k].childNodes[0].nodeValue);
//p_text3 = p_text3 + t + ', ';
var d = document.createElement("p");
var e = document.createTextNode("Author: " + t);
d.appendChild(e);
container.appendChild(d);
}
通过上述三种方式:我对option1没有任何意义,与选项二相同的结果是:作者:[Object Text],[Object Text],...
请帮帮我,谢谢。
答案 0 :(得分:0)
如果您以这种方式修复最后一个选项:
for(var k = 0; k < autho.length; k++)
{
var d = document.createElement("p");
var e = document.createTextNode("Author: " + autho[k].childNodes[0].nodeValue); // fix
d.appendChild(e);
container.appendChild(d);
}
它应该工作。您试图将字符串与textNode
对象连接起来......
但我们也需要一个XML样本......也许问题就在那里。