XML文件源码察看器(三)

博客给出了一段代码,通过 switch 语句对不同节点类型进行处理,如文本节点、指令节点、注释节点、Document 节点等。针对不同节点类型有不同操作,如显示节点值、调用子函数等,还包含给注释节点着色的函数。

switch(nodNode.nodeType)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


{


case 3: //文本节点, 黑色 粗体显示


strNodes+=getIndent(intLevel)+"<b>"+nodNode.nodeValue+"</b><br>";break;


case 7: //指令节点 调用子函数


strNodes+=renderInstruction(nodNode,intLevel);break;


case 8: //注释节点 调用子节点


strNodes+=renderComment(nodNode,intLevel);break;

case 9: //Document 节点 -- “节点。不需要显示,只需显示子节点


//遍历节点的子节点就是这样写地 : ) ,so easy


intCount = nodNode.childNodes.length;


if (intCount > 0)


{


for (intNode = 0; intNode < intCount; intNode++)


strNodes += renderChildNodes(nodNode.childNodes(intNode), intLevel + 1);


}


break;


default://普通节点


strNodes+=getIndent(intLevel)+"<font color=/"blue/">&lt;</font>"; // 蓝色 <


strNodes+="<font color=/"#800000/">"+nodNode.nodeName+"</font> "; // 褐色 node name

//显示 属性


nodAttrList = nodNode.attributes;//得到属性节点集(collection -- 我最喜欢的数据类型之一)


if (nodAttrList != null) //有属性


{


intCount = nodAttrList.length; //collection length ,方便吧? :)


if (intCount > 0)


{


for (intAttr = 0; intAttr < intCount; intAttr++)


//红色 属性名,蓝色 引号


strNodes += "<font color=/"red/">"+nodAttrList(intAttr).nodeName + '</font>=<font color=/"blue/">/"</font>' + nodAttrList(intAttr).nodeValue + '<font color=/"blue/">/"</font> ';


}


}


//处理当前节点的子节点


intCount = nodNode.childNodes.length;


if (intCount > 0)


{//如果有子节点


strNodes+="<font color=/"blue/">&gt;</font><br>" //属性显示完 ,用闭合 Tag


// 对每个子节点递归调用 renderChildNodes


for (intNode = 0; intNode < intCount; intNode++)


strNodes += renderChildNodes(nodNode.childNodes(intNode), intLevel + 1);


//显示关闭标记 </NodeName>


strNodes+=getIndent(intLevel)+"<font color=/"blue/">&lt;/</font><font color=/"#800000/">"+nodNode.nodeName +"</font><font color=/"blue/">&gt;</font><br>";


}


else


strNodes += "<font color=/"blue/">/&gt;</font><br>" //没有子节点, 显示 “ /


}


return strNodes;


}




//给注释节点着色


function renderComment(nodNode,intLevel)


{


var strNodes = '';


var intCount = 0;


var intNode = 0;


var nodAttrList;


strNodes+=getIndent(intLevel)+"<font color=/"gray/">&lt;!-- ";


strNodes+= nodNode.nodeValue;


strNodes+=" --&gt;</font><br>";


return strNodes;


}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值