JavaScript利用jQuery递归解析XML菜单结构

作者:小括号

时间:2026-10-28

浏览:209

本文介绍如何使用jQuery结合递归函数解析嵌套XML数据。通过遍历RightMenuItems节点,提取Code、Name等属性,并递归处理ChildItems,将XML结构转换为JavaScript对象数组,适用于动态生成菜单或配置解析场景。

文章目录

XML数据结构定义

XML数据结构如下:

具体代码实现如下:

<RightMenuItems>
<Item Code="New" Name="新建" GroupCode="Edit" GroupName="编辑"/>
<Item Code="Open" Name="打开" GroupCode="Edit" GroupName="编辑">
<item Code="Word" Name="Word文档" GroupCode="CommonDocument" GroupName="常规"/>
<item Code="Excel" Name="Excel文档" GroupCode="CommonDocument" GroupName="常规"/>
<item Code="CustomDocument" Name="自定义文档" GroupCode="CustomDocument" GroupName="自定义"/>
</Item>
<Item Code="Save" Name="保存" GroupCode="Edit" GroupName="编辑"/>
<Item Code="Exit" Name="离开" GroupCode="Exit" GroupName="离开"/>
</RightMenuItems>

递归解析逻辑实现

解析逻辑如下:

具体代码实现如下:

$(xml).find("RightMenuItems").each(function () {
this.data = Traversal($(this).children());
 });
var Traversal = function (nodes) {
var itemList = new Array();
$.each(nodes, function () {
var entity = new RightMenuEntity();
var obj = $(this);
entity.Code = obj[0].getAttribute("Code");
entity.Name = obj[0].getAttribute("Name");
entity.GroupCode = obj[0].getAttribute("GroupCode");
entity.GroupName = obj[0].getAttribute("GroupName");
if (obj[0].hasChildNodes()) entity.ChildItems = Traversal(obj.children());
itemList.push(entity);
        });
return itemList;
    };

以上即为使用JavaScript递归解析XML的完整代码,实现简洁且实用,供有相关需求的开发者参考。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章