正 文

XML遍历问题


www.7dspace.com  更新日期:2005-12-10 3:15:10  七度空间


我写了一个遍历XML文件的一个小代码,现在我是想把遍历时的父子关系用ID号来保存到数组(不是数组也行),怎么办呢?比如:

<?xml version="1.0" encoding="gbk"?>
<root>
    <a/>
    <b/>
    <c>
        <d/>
        <e/>
    </c>
    <f/>
</root>

我要保存这样的:

id号   父id号
1       0   //这个是<root> 第一个不用管,默认为零,ID号是递增的
2       1   //这个是<a>
3       1   //这个是<b>
4       1   //这个是<c>
5       4   //这个是<d>
6       4   //这个是<e>
7       1   //这个是<f>

我遍历时是用的递规,可是这个ID把我搞得好晕。其实我现在需要的是按层遍历。

按层遍历的代码:

<script>
var qNode=new Array;
var qCID=new Array;
var qPID=new Array;
var curID=1;

var xmldoc=new ActiveXObject('Microsoft.XMLDOM');
xmldoc.load('data.xml');

var oRoot=xmldoc.documentElement;

childs(oRoot,1,0);

function popQ(obj){//出队
    var cur=obj[0];
    obj.reverse();
    obj.length--;
    obj.reverse();
    return(cur);
}

function childs(Node,cID,parentID){

    alert("当前结点:"+Node.nodeName+" ID="+cID+" 父ID="+parentID);

    var childNodes=Node.childNodes;
    if(childNodes.length!=0)
    {

for(var i=0;i<childNodes.length;i++){
curID++;
qNode[qNode.length]=childNodes[i];//入队
qCID[qCID.length]=curID;//自己的ID
qPID[qPID.length]=cID;//父ID
}
if(qNode.length!=0){
childs(popQ(qNode),popQ(qCID),popQ(qPID));
}
    }
    else
    {
if(qNode.length!=0){
childs(popQ(qNode),popQ(qCID),popQ(qPID));
}
    }
}
</script>


上一篇:如何在活动目录中设置可登录的计算机
下一篇:Struts开发中遇到的困惑
作者:  来源:CSDN社区 ( 责任编辑:7dspace )
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐