您的位置:首页 > 其它

DOM解析xml文档节点下的所有子节点,怎么样只输出标签名而没有<#text>标签

2016-10-31 09:26 267 查看
XML文档:<?xml version="1.0" encoding="UTF-8"?><matchineroot nodetype="machine"><m_project nodetype="module" name="工程" address="ff" pNode="long/module/gsm/far_engineer1.xml"></m_project><m_cpu nodetype="module" name="MCU参数" power="1" address="00" pNode="long/module/gsm/far_mcu.xml"></m_cpu><m_digital nodetype="module" name="数字模块" power="1" address="ef" pNode="long/module/gsm/far_digital2.xml"></m_digital><m_rf nodetype="module" name="小信号模块" power="1" address="01" pNode="long/module/gsm/far_if.xml"></m_rf><m_pa nodetype="module" name="功放板" power="1" onekeycfg="1" address="e3" pNode="long/module/gsm/pa2.xml" ></m_pa></matchineroot>现在我要遍历根节点matchineroot节点下所有子节点并获得节点名,如果直接用DOM遍历节点的方法输出的节点名不仅包含文档中所有子节点名,还会输出很多<#text>,事实上node instanceof Text的场合:输出是:#text,node instanceof Element的场合:输出是:标签名,所以要加一个节点类型的判断才可以只输出节点名,即if(nodes.item(j) instanceof Element),完整代码如下:
var root = xmlDoc.getElementsByTagName("matchineroot");
for (i = 0; i < root.length; i++) {
var nodeItem = root.item(i);
var nodes = nodeItem.childNodes;
for (j = 0; j < nodes.length; j++) {
if (nodes.item(j) instanceof Element) {//判断是否属于属性节点,如果不加判断则会循环出text节点
nodeName = nodes.item(j).nodeName;
name = xmlDoc.getElementsByTagName(nodeName)[0].getAttribute("name");
if (module == name) {//通过判断查询的模块进一步查找相应的xml文档节点名
pNode = xmlDoc.getElementsByTagName(nodeName)[0].getAttribute("pNode");
break;
}
}
}
}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: