我知道网上有大量的例子,但我的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>
答案 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;
}