繁体   English   中英

通过子节点在Javascript中解析xml进行迭代

[英]Parsing xml in Javascript iterate through child nodes

我需要在javascript中解析以下xml。

<Department id='1' name='Admins'>
    <Floor Id='5' Name='WingA'>
        <Employee Id='35' Name='John Smith' SysId='120' FileId='135' />
        <Employee Id='124' Name='John Doe'  SysId='214' FileId='125' />
        <Employee Id='79' Name='Lorem Ipsum' SysId='185' FileId='194' />
    </Floor>
</Department>

我需要的是遍历所有员工,直到满足给定条件为止(例如,获取SysId = 214的员工节点的FileId)。 我能够获得Floor节点,但不确定如何遍历子节点并匹配条件? childNodes [0] .nodeValue似乎不起作用

parser = new DOMParser();
xmlDoc = parser.parseFromString(xmlstr, "text/xml");

 floor = xmlDoc.getElementsByTagName("Floor");
      for (i = 0; i < floor.length; i++) {
 floor[i].childNodes[0].nodeValue
}

尝试这样的事情:

for (var i = 0; i < floor.length; i++) {
  for (var j = 0; j < floor[i].childNodes.length; j++) {
    var el = floor[i].childNodes[j];
    console.log(el.attributes[2].nodeValue);
  }
} 

测试小提琴: https : //jsfiddle.net/1r2ydxhu/

Employee标记上没有nodeValue。.那么,您希望显示什么?

尝试更合适的方法:

.hasAttribute("SysId")
.getAttribute("SysId")

为什么不按“员工”进行选择? 仅是您要检查的第一层元素吗?

还认为如果将其解析为html,则存在多个子节点类型。

 for (i = 0; i < floor.childNodes.length; i++) {
     elm = floor.childNodes[i]
     if( elm.nodeType == 1 && elm.hasAttribute("SysId"))
       console.info(elm.getAttribute("SysId"))
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM