使用Javascript

时间:2017-08-24 06:44:23

标签: javascript xml

我知道网上有大量的例子,但我的XML中有一个特殊性,它带来了一些问题。 实际上,我需要遍历我的XML并阅读 cars 的标记名和文本。问题是所有元素的标签名称都不同;

<Vehicles>
   <cars>        
        <Toyota> Test 1 </Toyota>
        <BMW> Test 2 </BMW>
        <VW> Test 3 </VW>
        <Ferrari> Test 4 </Ferrari> 
   </cars> 
</Vehicles> 

我在这里将通过汽车,但只返回丰田。 我如何阅读其余部分,因为标记名都不同;

function myFunction(xml) {
  var x, y, z, i, xmlDoc, txt;
  xmlDoc = xml.responseXML;
  txt = "";
  x = xmlDoc.documentElement;     
  y = xmlDoc.getElementsByTagName("cars")[0];
  z = xmlDoc.getElementsByTagName("Toyota");

 // Output 
 for (i = 0; i < z.length; i++) { 
    txt += z[i].childNodes[0].nodeValue + "<br>";
 }
 document.getElementById("main").innerHTML = txt; 
}

我知道如何循环遍历 cars 的所有孩子,而不必提及标签名称,并将标签名本身和文本都返回给我? / p>

2 个答案:

答案 0 :(得分:2)

let models = Array.from(xmlDoc.getElementsByTagName('cars')[0].children).map(({nodeName:model, textContent:text}) => ({model, text})) 返回节点...节点的子节点在node.children

{ model: "model name", text: "text content of model tag" }

模型将是

的数组
this.items = [{
  xtype       : 'panel',
  cls         : 'srchr',
  dockedItems : [this.createSearchBar(), this.createHistory()]
}]

答案 1 :(得分:1)

您可以直接从汽车节点访问子节点。

尝试下面的代码,希望这有帮助

注意:我还没有执行代码,但我希望它可以正常运行

    function myFunction(xml) {
   var x, y, z, i, xmlDoc, txt;
  xmlDoc = xml.responseXML;
  txt = "";
  x = xmlDoc.documentElement;     
  y = xmlDoc.getElementsByTagName("cars")[0];

 // Output 
 for (i = 0; i < y.children.length; i++) { 
    txt += y.children[i].nodeName + "<br>";
 }
 document.getElementById("main").innerHTML = txt; 
}