使用javascript

时间:2016-11-08 17:34:59

标签: javascript html xml

我需要使用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标签值。

2 个答案:

答案 0 :(得分:0)

如果我理解正确,text之后<item>的{​​{1}}不是<attribute>。它的subitem

如果只需要item<item>以外的<parent><attribute>除外childNodes[0]

  1. getByTagName()中删除<item>。它打印<parent>内所有parentNode标签的第一个孩子。
  2. 添加一项简单的检查,以查看<item>的{​​{1}}是否为<parent>。然后打印出来。
  3. 类似的东西:

    //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);