遞規法遍歷xml樹的屬性和節點值,並將其批次放入陣列 (轉)
遞規法遍歷樹的屬性和節點值
注: function xml2script(xml_name, data) //引數xml_name: xml文件名,data:資料的陣列名 轉換成功後陣列,基本按照的呼叫方法,只不過將'()'轉換為'[]'
/**
* 遞迴法讀xml所有資料(包括屬性值)放入陣列
*
* MEMBER >>
*
*
* RETURN >>
*
*
* 建立者: 建立時間:
*
* 編寫者:wyc 編寫時間:02-12-7
*
* 修改者: 修改時間: 新增功能:
*
*/
function xml2javascript(xml_name, data)
{
// +----------------------------------------------------+
// | 建立MSXML.DOMDocument |
var xml_doc = new ("MSXML.DOMDocument");
xml_doc.async = false;
xml_doc.load(xml_name);
// +----------------------------------------------------+
var obj = xml_doc.documentElement;
var data_obj = data;
eval(data_obj + "=new Object();");
_getXml(obj, data_obj)
}
/**
* 內部
*
* MEMBER >>
*
*
* RETURN >>
*
*
* 建立者: 建立時間:
*
* 編寫者:wyc 編寫時間:02-12-7
*
* 修改者: 修改時間: 新增功能:
*
*/
function _getXml(obj, data_obj)
{
var node_count = obj.childNodes.length;
if (node_count == 0) { //如果沒有子節點,那麼返回
return;
}
eval(data_obj + ".childNodes=new Array();");
eval(data_obj + "._childNodes=new Array();");
for (var i=0; i
eval(data_obj + ".text=obj.text;"); //元素名稱
return;
}
if (obj.childNodes(i).nodeName == '#cdata-section') {
eval(data_obj + ".text= obj.text;");
return;
}
eval(data_obj + ".childNodes[i]=new Object();"); //新建一個元素
eval(data_obj + ".childNodes[i].nodeName=obj.childNodes(i).nodeName;"); //元素名稱
eval(data_obj + "._childNodes[obj.childNodes(i).nodeName]=i;"); //元素快取
//屬性
var attribute_count = obj.childNodes(i).attributes.length;
eval(data_obj + ".childNodes[i].attributes=new Array();"); //屬性陣列
eval(data_obj + ".childNodes[i]._attributes=new Array();"); //屬性快取陣列
for (var j=0; j
eval(data_obj + ".childNodes[i].attributes[j].nodeName=obj.childNodes(i).attributes(j).nodeName;");
eval(data_obj + ".childNodes[i].attributes[j].text=obj.childNodes(i).attributes(j).text;");
eval(data_obj + ".childNodes[i]._attributes[obj.childNodes(i).attributes(j).nodeName]=j;");
}
var obj_ = obj.childNodes(i);
var data_obj_ = data_obj + ".childNodes[" + i + "]";
_getXml(obj_, data_obj_);
}
}
//呼叫示例
xml2javascript('message.xml', 'aaa');
alert(aaa.childNodes[0].childNodes[1].nodeName);
alert(aaa.childNodes[0].childNodes[1].text);
//alert(aaa.childNodes[0].childNodes[1].attributes[0].text);
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-984612/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JS陣列遍歷和獲取陣列最值JS陣列
- 層序遍歷樹的節點,佇列實現佇列
- DOM 節點遍歷:掌握遍歷 XML文件結構和內容的技巧XML
- 物件和陣列的遍歷物件陣列
- js可列舉屬性的遍歷JS
- java8 對list集合中的物件遍歷,重新賦值兩種方法,遍歷某個屬性返回陣列Java物件賦值陣列
- 陣列遍歷陣列
- 構造無限級樹並深度遍歷查詢指定節點
- 二叉樹的非遞迴遍歷寫法二叉樹遞迴
- 使用遞迴遍歷並轉換樹形資料(以 TypeScript 為例)遞迴TypeScript
- php陣列轉xml的遞迴實現PHP陣列XML遞迴
- 建立二叉樹:層次遍歷--樹的寬度高度,後序遍歷--祖先節點二叉樹
- 陣列遍歷方法陣列
- 遍歷陣列物件陣列物件
- Swift中實現Array陣列和NSArray陣列的相互轉換與遍歷Swift陣列
- JavaScript遍歷物件的屬性JavaScript物件
- 遍歷物件和陣列的方法總結物件陣列
- 遍歷二叉樹的迭代和遞迴方法二叉樹遞迴
- jquery遍歷節點jQuery
- java陣列遍歷的方法Java陣列
- PHP xml 轉陣列 陣列轉 xml 操作PHPXML陣列
- 二叉樹的遍歷 → 不用遞迴,還能遍歷嗎二叉樹遞迴
- js 遍歷陣列方式JS陣列
- jQuery DOM節點的遍歷jQuery
- 全面解析Js陣列遍歷對原陣列的影響及返回值JS陣列
- 【Codeforces Round 362 (Div 2)D】【樹的遍歷 概率均分思想】Puzzles 兄弟節點的等概率遍歷下 樹的遍歷每點期望時間戳時間戳
- **PHP二維陣列遍歷時同時賦值PHP陣列賦值
- Unity遍歷物件serialized的屬性Unity物件Zed
- iOS遍歷陣列相同值元素到另一陣列中同一物件的子陣列iOS陣列物件
- 遍歷二叉樹-------遞迴&非遞迴二叉樹遞迴
- 遍歷陣列的幾種方法陣列
- Jvascript陣列迭代,遍歷的方法陣列
- JAVA多維陣列的遍歷Java陣列
- 陣列常見的遍歷迴圈方法、陣列的迴圈遍歷的效率對比陣列
- 合併陣列物件中相同的屬性值陣列物件
- 什麼是遍歷二叉樹,JavaScript實現二叉樹的遍歷(遞迴,非遞迴)二叉樹JavaScript遞迴
- Js陣列物件的屬性值升序排序,並指定陣列中的某個物件移動到陣列的最前面JS陣列物件排序
- php手冊 php陣列的遍歷有哪幾種方式?php陣列如何遍歷?PHP陣列