//加载指定节点下的所有资源
    protected XmlNodeStruct LoadResourcesByXMLNode(XmlNodeStruct nodeStruct)
    {
        //如果没有默认结构的节点 则退出加载 返回空对象
        if (nodeStruct.xmlNode == null)
        {
            return(new XmlNodeStruct());
        }

        //获取所有子节点
        XmlNodeList nodeList = nodeStruct.xmlNode.SelectNodes(XMLStaticString._item);

        //初始化节点资源
        nodeStruct.xmlResourceStructArray = new XmlResourceStruct[nodeList.Count];
        //每一个节点的元素
        XmlElement node = null;

        for (int i = 0; i < nodeList.Count; i++)
        {
            nodeStruct.xmlResourceStructArray[i] = new XmlResourceStruct();
            //把当前节点转换成元素 然后从元素中取值
            node = (XmlElement)nodeList[i];

            nodeStruct.xmlResourceStructArray[i].resName        = node.GetAttribute(XMLStaticString._name);
            nodeStruct.xmlResourceStructArray[i].resPackageName = node.GetAttribute(XMLStaticString._packagename);
            nodeStruct.xmlResourceStructArray[i].resPath        = node.GetAttribute(XMLStaticString._path);
            nodeStruct.xmlResourceStructArray[i].resVersion     = float.Parse(node.GetAttribute(XMLStaticString._version));
        }

        return(nodeStruct);
    }
    //加载指定资源XML结构
    protected XmlStruct LoadResourceXMLByXmlStruct(XmlStruct xmlStruct, string structName)
    {
        xmlStruct = new XmlStruct();

        XmlResourceStruct resourceStruct = GetResourceXMLStructFromMainXML(XMLStaticString._resourceFile, structName);

        xmlStruct.xmlName        = resourceStruct.resName;
        xmlStruct.xmlPackageName = resourceStruct.resPackageName;
        xmlStruct.xmlPath        = resourceStruct.resPath;
        xmlStruct.xmlVersion     = resourceStruct.resVersion;

        if (string.IsNullOrEmpty(xmlStruct.xmlPath))
        {
            return(xmlStruct);
        }

        XmlDocument xml = LoadXml(xmlStruct.xmlPackageName + "/" + xmlStruct.xmlPath);

        XmlNodeStruct nodeStruct   = new XmlNodeStruct();
        XmlNode       resourceNode = xml.SelectSingleNode(XMLStaticString._resources);

        nodeStruct.xmlNodeName = XMLStaticString._resourceFile;
        //加载XML的节点
        nodeStruct.xmlNode = resourceNode.SelectSingleNode(nodeStruct.xmlNodeName);
        //加载"ResourceFile"节点下的所有资源
        nodeStruct = LoadResourcesByXMLNode(nodeStruct);
        xmlStruct.xmlNodeStruct = nodeStruct;

        return(xmlStruct);
    }
    //从主XML中获取资源XML的结构
    protected XmlResourceStruct GetResourceXMLStructFromMainXML(string nodeName, string structName)
    {
        XmlResourceStruct resourceStruct = new XmlResourceStruct();
        XmlNodeStruct     nodeStruct     = new XmlNodeStruct();

        if (m_mainXMLNodeStructList != null)
        {
            for (int i = 0; i < m_mainXMLNodeStructList.Count; i++)
            {
                if (nodeName.Equals(m_mainXMLNodeStructList[i].xmlNodeName))
                {
                    nodeStruct = m_mainXMLNodeStructList[i];
                    break;
                }
            }

            if (nodeStruct.xmlResourceStructArray != null)
            {
                for (int i = 0; i < nodeStruct.xmlResourceStructArray.Length; i++)
                {
                    if (structName.Equals(nodeStruct.xmlResourceStructArray[i].resName))
                    {
                        resourceStruct = nodeStruct.xmlResourceStructArray[i];
                        return(resourceStruct);
                    }
                }
            }
        }

        return(resourceStruct);
    }
    //加载主XML中的节点
    protected void LoadMainXMLNode()
    {
        XmlNodeStruct nodeStruct   = new XmlNodeStruct();
        XmlNode       resourceNode = m_mainXML.SelectSingleNode(XMLStaticString._resources);

        nodeStruct.xmlNodeName = XMLStaticString._resourceFile;
        //加载XML的节点
        nodeStruct.xmlNode = resourceNode.SelectSingleNode(nodeStruct.xmlNodeName);
        //加载"ResourceFile"节点下的所有资源
        nodeStruct = LoadResourcesByXMLNode(nodeStruct);
        m_mainXMLNodeStructList.Add(nodeStruct);
    }
    //从指定XML中获取指定的XML节点
    protected XmlResourceStruct GetNodeStructByXMLStruct(XmlStruct xml, string resParentNodeName, string resName)
    {
        XmlNodeStruct     parentNode = new XmlNodeStruct();
        XmlResourceStruct resStruct  = new XmlResourceStruct();

        parentNode = xml.xmlNodeStruct;

        for (int i = 0; i < parentNode.xmlResourceStructArray.Length; i++)
        {
            if (resName.Equals(parentNode.xmlResourceStructArray[i].resName))
            {
                resStruct = parentNode.xmlResourceStructArray[i];
                break;
            }
        }
        return(resStruct);
    }
示例#6
0
        /// <summary>
        /// 获取除了场景外的所有配置
        /// </summary>
        /// <param name="xml"></param>
        private static void _getOther(XmlElement xml)
        {
            Config.Clear();
            foreach (XmlElement node in xml)
            {
                //因为场景是单独处理所以跳过
                if (node.Name == ConfigNodeConst.Scences)
                {
                    continue;
                }

//                if (node.Attributes.GetNamedItem(XmlAttributeConst.Min) != null)
//                {
//                    _getSdkVersions(node);
//                    continue;
//                }
//
//                if (node.Name == AndroidAndIosConfigNodeConfig.TargetDevice)
//                {
//                    _getTargetDevice(node);
//                    continue;
//                }

                var xmlstruct = new XmlNodeStruct
                {
                    XmlAttributes = new Dictionary <string, string>(),
                };

                foreach (XmlAttribute attribute in node.Attributes)
                {
                    xmlstruct.XmlAttributes.Add(attribute.Name, attribute.InnerText);
                }

                xmlstruct.Value = node.InnerText;

                Config.Add(node.Name, xmlstruct);
            }
        }