public static bool ParseAssetBundleData(string configString, out AssetBundleData assetBundleData) { assetBundleData = null; XmlDocument doc = new XmlDocument(); try { doc.LoadXml(configString); } catch (System.Exception exception) { Debug.LogError("Cannot parse config file"); return false; } assetBundleData = new AssetBundleData(); XmlNode buildAssetBundleNode = doc.SelectSingleNode("buildAssetBundle"); if (buildAssetBundleNode == null) { Debug.LogError("Cannot parse node(buildAssetBundle)"); return false; } // ignoreExtention XmlNode ignoreExtentionNode = buildAssetBundleNode.Attributes.GetNamedItem("ignoreExtention"); if (ignoreExtentionNode != null) { string[] blocks = ignoreExtentionNode.Value.Split(';'); if (blocks != null && blocks.Length > 0) { assetBundleData.ignoreExtentionList = new List<string>(); foreach (string block in blocks) { assetBundleData.ignoreExtentionList.Add(block); } } } // platform #if UNITY_EDITOR XmlNode platformNode = buildAssetBundleNode.Attributes.GetNamedItem("platform"); if (platformNode != null) { try { assetBundleData.platform = (BuildTarget)System.Enum.Parse(typeof(BuildTarget), platformNode.Value); } catch (System.Exception exception) { Debug.LogError("Cannot parse node(platform)" + ":" + platformNode.Value); return false; } } #endif // saveRoot XmlNode saveRootNode = doc.SelectSingleNode("buildAssetBundle/saveRoot"); if (saveRootNode == null) { Debug.LogError("Cannot parse node(saveRoot)"); return false; } assetBundleData.saveRoot = saveRootNode.InnerText; // asset XmlNodeList assetNodeList = doc.SelectNodes("buildAssetBundle/asset"); if (assetNodeList == null || assetNodeList.Count == 0) { Debug.LogError("Nothing asset"); return false; } assetBundleData.assetDataMap = new Dictionary<string, AssetData>(); foreach (XmlNode assetNode in assetNodeList) { AssetData assetData = new AssetData(); assetData.enabled = true; assetData.itemDataCollectionList = new List<ItemDataCollection>(); // id XmlNode idNode = assetNode.Attributes.GetNamedItem("id"); if (idNode == null) { Debug.LogError("Missing asset id"); return false; } if (assetBundleData.assetDataMap.ContainsKey(idNode.Value)) { Debug.LogError("Repeated id:" + idNode.Value); return false; } if (string.IsNullOrEmpty(idNode.Value)) { Debug.LogError("Missing asset id:" + idNode.Value); return false; } assetData.id = idNode.Value; assetBundleData.assetDataMap.Add(assetData.id, assetData); // dependence XmlNode dependenceNode = assetNode.Attributes.GetNamedItem("dependence"); if (dependenceNode != null) { assetData.dependence = dependenceNode.Value; } // item XmlNodeList itemNodeList = assetNode.SelectNodes("item"); if (itemNodeList != null && itemNodeList.Count > 0) { foreach (XmlNode itemNode in itemNodeList) { ItemDataCollection itemDataCollection = new ItemDataCollection(); assetData.itemDataCollectionList.Add(itemDataCollection); itemDataCollection.bind = false; itemDataCollection.itemDataList = new List<ItemData>(); ItemData itemData = null; if (!ParseItemNode(itemNode, assetData.id, out itemData)) { return false; } itemDataCollection.itemDataList.Add(itemData); } } // bind XmlNodeList bindNodeList = assetNode.SelectNodes("bind"); if (bindNodeList != null) { foreach (XmlNode bindNode in bindNodeList) { ItemDataCollection itemDataCollection = new ItemDataCollection(); assetData.itemDataCollectionList.Add(itemDataCollection); itemDataCollection.bind = true; itemDataCollection.itemDataList = new List<ItemData>(); // savePath XmlNode savePathNode = bindNode.Attributes.GetNamedItem("savePath"); if (savePathNode == null) { Debug.LogError("Cannot parse node(bind.savePath)" + ":" + assetData.id); return false; } itemDataCollection.savePath = savePathNode.Value; // item XmlNodeList itemNodeList2 = bindNode.SelectNodes("item"); if (itemNodeList2 != null && itemNodeList2.Count > 0) { foreach (XmlNode itemNode in itemNodeList2) { ItemData itemData = null; if (!ParseItemNode(itemNode, assetData.id, out itemData)) { return false; } itemDataCollection.itemDataList.Add(itemData); } } // empty test if (itemDataCollection.IsEmpty()) { Debug.LogWarning("Empty asset config:" + assetData.id); } } } // empty test if (assetData.IsEmpty()) { Debug.LogWarning("Empty asset config:" + assetData.id); } } return true; }
public static bool ParseAssetBundleData(string configString, out AssetBundleData assetBundleData) { assetBundleData = null; XmlDocument doc = new XmlDocument(); try { doc.LoadXml(configString); } catch (System.Exception exception) { Debug.LogError("Cannot parse config file"); return(false); } assetBundleData = new AssetBundleData(); XmlNode buildAssetBundleNode = doc.SelectSingleNode("buildAssetBundle"); if (buildAssetBundleNode == null) { Debug.LogError("Cannot parse node(buildAssetBundle)"); return(false); } // ignoreExtention XmlNode ignoreExtentionNode = buildAssetBundleNode.Attributes.GetNamedItem("ignoreExtention"); if (ignoreExtentionNode != null) { string[] blocks = ignoreExtentionNode.Value.Split(';'); if (blocks != null && blocks.Length > 0) { assetBundleData.ignoreExtentionList = new List <string>(); foreach (string block in blocks) { assetBundleData.ignoreExtentionList.Add(block); } } } // platform #if UNITY_EDITOR XmlNode platformNode = buildAssetBundleNode.Attributes.GetNamedItem("platform"); if (platformNode != null) { try { assetBundleData.platform = (BuildTarget)System.Enum.Parse(typeof(BuildTarget), platformNode.Value); } catch (System.Exception exception) { Debug.LogError("Cannot parse node(platform)" + ":" + platformNode.Value); return(false); } } #endif // saveRoot XmlNode saveRootNode = doc.SelectSingleNode("buildAssetBundle/saveRoot"); if (saveRootNode == null) { Debug.LogError("Cannot parse node(saveRoot)"); return(false); } assetBundleData.saveRoot = saveRootNode.InnerText; // asset XmlNodeList assetNodeList = doc.SelectNodes("buildAssetBundle/asset"); if (assetNodeList == null || assetNodeList.Count == 0) { Debug.LogError("Nothing asset"); return(false); } assetBundleData.assetDataMap = new Dictionary <string, AssetData>(); foreach (XmlNode assetNode in assetNodeList) { AssetData assetData = new AssetData(); assetData.enabled = true; assetData.itemDataCollectionList = new List <ItemDataCollection>(); // id XmlNode idNode = assetNode.Attributes.GetNamedItem("id"); if (idNode == null) { Debug.LogError("Missing asset id"); return(false); } if (assetBundleData.assetDataMap.ContainsKey(idNode.Value)) { Debug.LogError("Repeated id:" + idNode.Value); return(false); } if (string.IsNullOrEmpty(idNode.Value)) { Debug.LogError("Missing asset id:" + idNode.Value); return(false); } assetData.id = idNode.Value; assetBundleData.assetDataMap.Add(assetData.id, assetData); // dependence XmlNode dependenceNode = assetNode.Attributes.GetNamedItem("dependence"); if (dependenceNode != null) { assetData.dependence = dependenceNode.Value; } // item XmlNodeList itemNodeList = assetNode.SelectNodes("item"); if (itemNodeList != null && itemNodeList.Count > 0) { foreach (XmlNode itemNode in itemNodeList) { ItemDataCollection itemDataCollection = new ItemDataCollection(); assetData.itemDataCollectionList.Add(itemDataCollection); itemDataCollection.bind = false; itemDataCollection.itemDataList = new List <ItemData>(); ItemData itemData = null; if (!ParseItemNode(itemNode, assetData.id, out itemData)) { return(false); } itemDataCollection.itemDataList.Add(itemData); } } // bind XmlNodeList bindNodeList = assetNode.SelectNodes("bind"); if (bindNodeList != null) { foreach (XmlNode bindNode in bindNodeList) { ItemDataCollection itemDataCollection = new ItemDataCollection(); assetData.itemDataCollectionList.Add(itemDataCollection); itemDataCollection.bind = true; itemDataCollection.itemDataList = new List <ItemData>(); // savePath XmlNode savePathNode = bindNode.Attributes.GetNamedItem("savePath"); if (savePathNode == null) { Debug.LogError("Cannot parse node(bind.savePath)" + ":" + assetData.id); return(false); } itemDataCollection.savePath = savePathNode.Value; // item XmlNodeList itemNodeList2 = bindNode.SelectNodes("item"); if (itemNodeList2 != null && itemNodeList2.Count > 0) { foreach (XmlNode itemNode in itemNodeList2) { ItemData itemData = null; if (!ParseItemNode(itemNode, assetData.id, out itemData)) { return(false); } itemDataCollection.itemDataList.Add(itemData); } } // empty test if (itemDataCollection.IsEmpty()) { Debug.LogWarning("Empty asset config:" + assetData.id); } } } // empty test if (assetData.IsEmpty()) { Debug.LogWarning("Empty asset config:" + assetData.id); } } return(true); }