Parsing xml in Javascript 遍历子节点
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>
我需要的是遍历所有员工,直到满足给定条件(例如,获取员工节点的 FileId,其中 SysId=214)。我能够获取 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);
}
}
测试Fiddle:https://jsfiddle.net/1r2ydxhu/
Employee 标签上没有 nodeValue。那么您希望显示什么?
试试更合适的:
.hasAttribute("SysId")
.getAttribute("SysId")
为什么 "Employee" 不 select 呢?您要检查的只是一楼的元素吗?
还认为如果解析为 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"))
}
我需要在 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>
我需要的是遍历所有员工,直到满足给定条件(例如,获取员工节点的 FileId,其中 SysId=214)。我能够获取 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);
}
}
测试Fiddle:https://jsfiddle.net/1r2ydxhu/
Employee 标签上没有 nodeValue。那么您希望显示什么?
试试更合适的:
.hasAttribute("SysId")
.getAttribute("SysId")
为什么 "Employee" 不 select 呢?您要检查的只是一楼的元素吗?
还认为如果解析为 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"))
}