我目前有一个javascript函数,可以很容易地计算出一个特定标签所包含的元素数量。我也想知道是否还有一种简便的方法可以计算包含“标签”内部值的元素(或父元素)的数量。
我的XML文件的设置与此类似,每个3级嵌套都有相同的标签:
<GAMECATALOG>
<PS4>
<SHOOTER>
<NAME>Shootergame</NAME>
<PRODUCER>Microsoft</PRODUCER>
</SHOOTER>
<SHOOTER>
<NAME>Shootergame2</NAME>
<PRODUCER>UbiSoft</PRODUCER>
</SHOOTER>
<HORROR>
<NAME>Horrorgame</NAME>
<PRODUCER>UbiSoft</PRODUCER>
</HORROR>
</PS4>
<XBOX>
<ADVENTURE>
<NAME>Shootergame</NAME>
<PRODUCER>Microsoft</PRODUCER>
</ADVENTURE>
<RPG>
<NAME>Horrorgame</NAME>
<PRODUCER>UbiSoft</PRODUCER>
</RPG>
</XBOX>
</GAMECATALOG>
示例javascript代码:
var numOfPs4 = xmlDoc.getElementsByTagName("PS4")[0].children.length;
var numOfXbox = xmlDoc.getElementsByTagName("XBOX")[0].children.length;
var totalGames = numOfShooters + numOfAdventure;
//find the total number of each of the game types within PS4
var numOfShooters = xmlDoc.getElementsByTagName("SHOOTER").length;
var numOfHorrors = xmlDoc.getElementsByTagName("HORROR").length;
//find the total number of each of the game types within XBOX
var numOfAdventure = xmlDoc.getElementsByTagName("ADVENTURE").length;
var numOfRpg = xmlDoc.getElementsByTagName("RPG").length;
// count the number of games of a specific producer
var numOfUbiSoft = ???
现在,我的XML比这要长得多,但是一切都在正确计数。现在,我只需要能够在生产者标签中找到多少个元素包含UbiSoft的值。这些标签的父级,或者只是该值出现在文档中的次数,在这个示例中应该是3。
答案 0 :(得分:1)
尝试:
const producers = xml.getElementsByTagName("PRODUCER");
const numUbiSoft = Array.from(producers).filter((producer) => producer.innerHTML === 'UbiSoft').length;
答案 1 :(得分:0)
以下几行应该可以起作用:
var producers = xmlDoc.getElementsByTagName("PRODUCER");
var numOfUbiSoft = 0;
for(var i = 0; i < producers.length; i++) {
var producer = producers[i];
if ("UbiSoft" === producer.nodeValue) {
numOfUbiSoft++;
}
}