我有以下XML文件。我希望在comment
节点值等于“hey”(例如)的条件下显示节点title
的每个子节点。
<?xml version="1.0" encoding="ISO-8859-1"?>
<database>
<entry>
<title>hey</title>
<content>it works!!</content>
<time>8/6/2013 3:05:59 PM</time>
<comment><title>aa</title><text>bb</text><rating>2</rating></comment>
<comment><title>yyyyy</title><text>yyyy</text><rating>0</rating></comment>
</entry>
<entry>
<title>aaaaaaaaaaaaaa</title>
<content>aaaaaaaaa</content>
<time>8/6/2013 3:08:11 PM</time>
</entry>
</database>
我尝试使用一些for
循环执行此操作,但它并不总是有效。有没有一种简单的方法可以使用javascript解决我的问题?
以下是我尝试使用的一些示例代码(仅第一部分)。我应该如何从这里继续?
x=xmlDoc.documentElement.childNodes;
for (a=0;a<x.length;a++) {
if (x.item(a).nodeType==1) {
if(x.item(a).getElementsByTagName("title")[0].childNodes[0].nodeValue=="<?php echo $_REQUEST["title"]; ?>") {
for (b=0;b<3;b++) {
document.getElementById("comments").innerHTML += "<h3>"+x.item(a).getElementsByTagName("comment")[b].childNodes[0].textContent+"</h3>";
document.getElementById("comments").innerHTML += "<p>"+x.item(a).getElementsByTagName("comment")[b].childNodes[1].textContent+"</p>";
document.getElementById("comments").innerHTML += "<div>"+x.item(a).getElementsByTagName("comment")[b].childNodes[2].textContent+"</div>";
document.getElementById("comments").innerHTML += "<hr></hr>";
}
}
}
}
答案 0 :(得分:1)
我在这里回答了类似的问题,希望这会有所帮助... SO
如果不让我知道
<强> HTML 强>
<div id='comments'></div>
<强> JAVASCRIPT 强>
var xmlDoc = loadXMLString(xml),
x = xmlDoc.documentElement.childNodes,
domStr = '',
commentDiv = document.getElementById("comments");
for (var i = 0; i < x.length; i++) {
if (x[i].nodeType === 1){
var commmentNode = x[i].getElementsByTagName("comment");
for (var j = 0; j < commmentNode.length; j++){
if ( commmentNode[j].getElementsByTagName('title')[0].childNodes[0].textContent === "hey") {
domStr += "<h3>" + commmentNode[j].getElementsByTagName('title')[0].childNodes[0].textContent + "</h3>";
domStr += "<p>" + commmentNode[j].getElementsByTagName('text')[0].childNodes[0].textContent + "</p>";
domStr += "<div>" + commmentNode[j].getElementsByTagName('rating')[0].childNodes[0].textContent + "</div><hr></hr>";
console.log(domStr);
commentDiv.innerHTML += domStr;
}
}
}
}
<强>样本强>
<强> UPDATE JSFIDDLE 强>