//加载指定节点下的所有资源 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); }
/// <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); } }