zoukankan      html  css  js  c++  java
  • 使用LayaAir解析xml文件

    LayaBox对XML的加载进行了封装,相对于纯JS加载xmldom来说要方便了很多,我们直接调用laya的loader便可加载完成

    var _res = [
        {url: "res/config/test.xml", type: laya.net.Loader.XML},
    ];
    
    var loadXml = function(){
        //解析xml代码
    }
    
    Laya.loader.load(_res, laya.utils.Handler.create(this, function () {
                //加载完毕
                loadXml();
            }));
    }

    注意:加载文件的类型一定要是laya.net.Loader.XML

    以下是用来测试的xml

    <Root Name="test">
        <ATTR1 num="0" count="147"></ATTR1>
        <ATTR2 path="test/1024.jpg" name="你猜"></ATTR2>
        <REPEATED name="小明" age="10"></REPEATED>
        <REPEATED name="李狗蛋儿" age="20"></REPEATED>
    </Root>

    加载完成之后就是对xml文件的解析了,首先我们要获取这个xmldom

    var xmlDom = laya.net.Loader.getRes("res/config/test.xml");

    然后就可以逐层遍历xml,把数据按我们想要的格式存储起来

    var attr = xmlDom.childNodes[0].childNodes;
    for (var i = 0; i < attr.length; i++){
        if (attr[i].nodeName == "ATTR1"){
            for (var j = 0 ; j < attr[i].attributes.length ; j++){
                if (attr[i].attributes[j].nodeName == "num"){
                    this._battleData.num = attr[i].attributes[j].nodeValue;
                }
                else if (attr[i].attributes[j].nodeName == "count"){
                    this._battleData.count = attr[i].attributes[j].nodeValue;
                }
            }
        }
    }

    对于嵌套层次更深的节点,也是类似的做法 这里只是简单地记录一下使用方法,真正的游戏中需要把xml解析使用单独文件来管理

  • 相关阅读:
    Unity 之 中文乱码
    fork调用的底层实现
    Linux错误代码含义
    VMware 获取该虚拟机的所有权失败
    Qt ------ QAction
    C++ ------ const迭代器 和 const_iterator的区别
    IAR ------- 在线调试技巧
    STM32 ------ HardFault_Hander 中断函数
    从一张表中复制数据到另一张表中
    分布式任务调度平台xxl-job
  • 原文地址:https://www.cnblogs.com/SolarWings/p/6086944.html
Copyright © 2011-2022 走看看