JavaScript Xml 计数

标签 javascript xml nodes

示例 XML。

<node>
<nodeid>28</nodeid>
<account_no xsi:nil="true" />
<address1>15 CANCUN CT</address1>
<serial_no>112199543</serial_no>
<x_lat>25.95513358000</x_lat>
<y_lon>-97.49027147000</y_lon>
<alarm>
  <alarmid>Outage</alarmid>
  <alarmtime>2012-07-30T14:46:29</alarmtime>
</alarm>
<alarm>
  <alarmid>Restore</alarmid>
  <alarmtime>2012-07-30T14:55:29</alarmtime>
</alarm>
</node>
<node>
<nodeid>67</nodeid>
<account_no>274192</account_no>
<address1>1618 CHIPINQUE DR</address1>
<serial_no>112199521</serial_no>
<x_lat>25.95286395000</x_lat>
<y_lon>-97.49323166000</y_lon>
<alarm>
  <alarmid>Outage</alarmid>
  <alarmtime>2012-07-30T14:46:29</alarmtime>
</alarm>
</node>
</ROOT>

我想统计有多少个

<alarm>

第一个节点和第二个节点都有的元素。我尝试在 for 循环中执行此操作...

xmlDoc.getElementByTagName('alarm')[i].length;

这为我提供了 xml 文件中所有“警报”标签的数量。我想要的是当前的“节点”警报元素。所以这就是我想要的,我想让它告诉我第一个有 2

<alarm>

标签,第二个“节点”有 1

<alarm>

只有 javascript,没有 jQuery。

最佳答案

试试这个:

var nodes = xmlDoc.getElementsByTagName('node'), //Get the <node> tags
    amountOfNodes = nodes.length

for(var i = 0; i < amountOfNodes; i++) { //loop thru the nodes

   console.log(nodes[i].getElementsByTagName('alarm').length); //get the amount of <alarm> tags

}

编辑 这是一个工作示例:Fiddle .

告诉我这是否能解决您的问题:)

关于JavaScript Xml 计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11747868/

相关文章:

c# - 有没有办法解析无效的 HTML?

c++ - 删除二叉搜索树的根节点

c++ - 将数组转换为节点

c++ - "new"构造链表节点时如何删除链表?

javascript - 我在 mvc、LoadBooks、RequirementBooks 中有 2 个 View

javascript - JS Promises - 当只有单个路径是异步时的 if-else 流程

javascript - ng-repeat 在 reangular 发布请求后确实更新了

c# - 冒号字符在 xml 元素序列化过程中被编码为 x003A

xml - 按属性对 XML 进行排序和修改

javascript - 在我的 android 上按回时,如何使用 javascript 隐藏我的 sidenav?