/**
?*?得到XML文件屬性的集合對象
?*?
@param
?xmlDoc?XML對象
?*?
@param
?name?屬性名稱?如:?user
?*?
@return
?返回?Array?對象
?*?Example?XML:
?*?<?xml?version='1.0'?encoding='utf-8'?>
?*?<ekuy>
?*???<user>
?*?????<name>
?*???????<cnname>小豬</cnname>
?*?????</name>
?*?????<age>27</age>
?*???</user>
?*???<user>
?*?????<name>
?*???????<cnname>小霞</cnname>
?*?????</name>
?*?????<age>26</age>
?*???</user>
?*?</ekuy>
?
*/
function?getXMLArray(xmlDoc,?name)?{
??var?keys?
=
?name.split(
'
.
'
);
??var?node?
=
?xmlDoc.documentElement;??????
//
?得到根節點
??var?rtn?
=
?
new
?Array();
??var?n?
=
?
0
;
??
for
(var?i
=
0
;?i
<
keys.length;?i
++
)?{
????var?childs?
=
?node.childNodes;???????
//
?得到子節點
????var?key?
=
?keys[i];
?
for
(var?k
=
0
;?k
<
childs.length;?k
++
)?{??????
???var?child?
=
?childs[k];
???
if
(child.nodeName?
==
?key)?{?????
//
?判斷子節點是否符合
??
if
(i?
==
?keys.length
-
1
)?{
??????????rtn[n]?
=
?child;
????n
++
;
??}?
else
?{
????node?
=
?child;
????
break
;
??}
???}
?}
??}
??
return
?rtn;
}
/**
?*?得到由getXMLArray函數得到對象中的值
?*?
@param
?node?節點對象
?*?
@param
?name?
?*?
@return
?返回?String?
?
*/
function?getValue(node,?name)?{
??var?keys?
=
?name.split(
'
.
'
);
??
??
for
(var?i
=
0
;?i
<
keys.length;?i
++
)?{
????var?childs?
=
?node.childNodes;???????
//
?得到子節點
????var?key?
=
?keys[i];
?
for
(var?k
=
0
;?k
<
childs.length;?k
++
)?{??????
???var?child?
=
?childs[k];
???
if
(child.nodeName?
==
?key)?{?????
//
?判斷子節點是否符合
??
if
(child.childNodes.length?
==
?
1
)?{?????????
????
//
?如果沒有字節點,返回值
????
return
?child.text;
??}?
else
?{?????????????????????????????????
????
//
?還有子節點,繼續分析
????node?
=
?child;
????
break
;
??}
???}
?}
??}
??
return
?
""
;
}
//
?測試:
var?xmlDoc?
=
?
new
?ActiveXObject(
"
Microsoft.XMLDOM
"
);
xmlDoc.async?
=
?
false
;
xmlDoc.loadXML(
"
<?xml?version='1.0'?encoding='utf-8'?><ekuy><user><name><cnname>小豬</cnname></name><age>27</age></user><user><name><cnname>小霞</cnname></name><age>26</age></user><user><name><cnname>小章</cnname></name><age>25</age></user></ekuy>
"
);
var?list?
=
?getXMLArray(xmlDoc,?
'
user
'
);
for
(var?i
=
0
;?i
<
list.length;?i
++
)?{
??var?obj?
=
?list[i];
??document.write(getValue(obj,?
'
name.cnname
'
));
??document.write(getValue(obj,?
'
age
'
));
??document.write(
'
<br\/>
'
);
}
posted on 2006-12-25 17:12
kelven 閱讀(1242)
評論(1) 編輯 收藏 所屬分類:
JavaScript