我需要使用javascript将xml文件中的数据导入到html表中。
我已经通过了W3School示例http://www.w3schools.com/xml/tryit.asp?filename=tryxml_display_table
在我的xml文件中,子属性和父属性可能相同,但我想只显示父属性
<resource>
<parent>
<item>item1</item>
<attribute>
<item>subitem</item>
</attribute>
<item>subitem</item>
<description>
</description>
</parent>
</resource>
在上面的示例中,我有两个项目标签,一个是父级,另一个是子项。 我只想获得父标签值
这是我的HTML代码
<!DOCTYPE html>
<html>
<style>
table,th,td {
border : 1px solid black;
border-collapse: collapse;
}
th,td {
padding: 5px;
}
</style>
<body onload="loadXMLDoc();">
<br><br>
<table id="demo"></table>
<script>
function loadXMLDoc() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myFunction(this);
}
};
xmlhttp.open("GET", "newXMLfile.xml", true);
xmlhttp.send();
}
function myFunction(xml) {
var i;
var xmlDoc = xml.responseXML;
var table="<tr><th>Name</th></tr>";
var x = xmlDoc.getElementsByTagName("parent");
for (i = 0; i <x.length; i++) {
table += "<tr><td>" +
x[i].getElementsByTagName("item")[0].childNodes[0].nodeValue +
"</td>";
}
document.getElementById("demo").innerHTML = table;
}
</script>
</body>
</html>
但在这里我只获得subitem标签值。
答案 0 :(得分:0)
如果我理解正确,text
之后<item>
的{{1}}不是<attribute>
。它的subitem
。
如果只需要item
中<item>
以外的<parent>
,<attribute>
除外childNodes[0]
getByTagName()
中删除<item>
。它打印<parent>
内所有parentNode
标签的第一个孩子。<item>
的{{1}}是否为<parent>
。然后打印出来。类似的东西:
//Get every <item> within <parent>
var item = x[i].getElementsByTagName('item');
//for each item
for(... ){
if(item[i].parentNode.name == "parent"){
table += "<tr><td>" +
item[i].nodeValue +
"</td>";
}
}
我不完全确定parentNode.name
怎么样。这只是一个想法。
Here是MSDN文档。
答案 1 :(得分:0)
如果我理解你的话,请尝试下一个代码。
If strInfected = False Then
wscript.echo "System Clear!"
wscript.quit(0)
End If
var testXML=`<resource>
<parent>
<item>item1</item>
<attribute>
<item>attribute subitem</item>
</attribute>
<item> subitem</item>
<description>
</description>
</parent>
</resource>`;
function myFunction(xml) {
var table="<tr><th>Name</th></tr>";
var parentNodes = $(xml).find("parent");
for (var i = 0; i <parentNodes.length; i++) {
table += "<tr><td>" +
$(parentNodes[i]).find("attribute item").text() +
"</td>";
}
document.getElementById("demo").innerHTML = table;
}
myFunction(testXML);