using System.Collections; using System.Collections.Generic; using System.Xml; using UnityEngine; using UnityEngine.UI; public class BaseInfoMsgBind : MonoBehaviour { #region 基本情况 [Rename("单位名称")] public Text Name; [Rename("企业法人")] public Text LegalPerson; [Rename("电话")] public Text LPPhone; [Rename("单位地址")] public Text Address; [Rename("消防负责人")] public Text FireChief; [Rename("电话")] public Text FCPhone; [Rename("经纬度坐标")] public Text Coordinate; [Rename("使用性质")] public Text Function; [Rename("占地面积")] public Text CoveredArea; [Rename("耐火等级")] public Text FireResistanceRating; [Rename("建筑面积")] public Text BuildArea; [Rename("建筑结构")] public Text BuildStructure; #endregion #region 周边环境 [Rename("道路东")] public Text RoadEast; [Rename("道路西")] public Text RoadWest; [Rename("道路南")] public Text RoadSouth; [Rename("道路北")] public Text RoadNorth; [Rename("建筑东")] public Text BuildingEast; [Rename("建筑西")] public Text BuildingWest; [Rename("建筑南")] public Text BuildingSouth; [Rename("建筑北")] public Text BuildingNorth; [Rename("距离东")] public Text DistanceEast; [Rename("距离西")] public Text DistanceWest; [Rename("距离南")] public Text DistanceSouth; [Rename("距离北")] public Text DistanceNorth; #endregion [Rename("一行横线预设")] public GameObject BorderH; [Rename("信息栏")] public GameObject AutoParent; #region 联动单位 [Rename("联动单位一行预设")] public GameObject PowerMsgPrefab; [Rename("联动单位标题栏")] public GameObject PowerMsgTitle; #endregion #region 罐区信息 [Rename("罐区信息一行预设")] public GameObject OilCanPrefab; [Rename("罐区信息标题栏")] public GameObject OilCanTitle; #endregion #region XML相关 private XmlDocument XmlDoc = new XmlDocument(); public string Path = @"\StreamingAssets\MainMapXml.xml"; private XmlNode BaseInfo; private XmlNode Surroundings; private XmlNode LinkageUnit; private XmlNode TankField; #endregion void Awake() { GetAllXmlNodes(); BindBaseInfoData(); BindArroundData(); BindPowerUnitData(); BindOilCanData(); } public void ResetBaseInfo() { Name.text = ""; LegalPerson.text = ""; LPPhone.text = ""; Address.text = ""; FireChief.text = ""; FCPhone.text = ""; Coordinate.text = ""; Function.text = ""; CoveredArea.text = ""; FireResistanceRating.text = ""; BuildArea.text = ""; BuildStructure.text = ""; } public void ResetArround() { RoadEast.text = ""; RoadWest.text = ""; RoadSouth.text = ""; RoadNorth.text = ""; BuildingEast.text = ""; BuildingWest.text = ""; BuildingSouth.text = ""; BuildingNorth.text = ""; DistanceEast.text = ""; DistanceWest.text = ""; DistanceSouth.text = ""; DistanceNorth.text = ""; } //获取XML文档中的所有信息结点 public void GetAllXmlNodes() { XmlDoc.Load(Application.dataPath + Path); var children = XmlDoc.SelectSingleNode("Maps").ChildNodes; XmlElement Map = null; foreach (XmlElement node in children) { if (node.Name == "Map") { Map = node; break; } } XmlNode DeptInfo = Map.FirstChild; foreach (XmlNode item in DeptInfo.ChildNodes) { switch (item.Name) { case "BaseInfo": BaseInfo = item; break; case "Surroundings": Surroundings = item; break; case "LinkageUnit": LinkageUnit = item; break; case "TankField": TankField = item; break; default: break; } } } //绑定基本情况显示方法 public void BindBaseInfoData() { if (BaseInfo != null) { foreach (XmlNode node in BaseInfo.ChildNodes) { switch (node.Name) { case "Name": Name.text = ((XmlElement)node).GetAttribute("Name"); break; case "LegalPerson": LegalPerson.text = ((XmlElement)node).GetAttribute("LegalPerson"); break; case "LPPhone": LPPhone.text = ((XmlElement)node).GetAttribute("Phone"); break; case "Address": Address.text = ((XmlElement)node).GetAttribute("Address"); break; case "FireChief": FireChief.text = ((XmlElement)node).GetAttribute("FireChief"); break; case "FCPhone": FCPhone.text = ((XmlElement)node).GetAttribute("Phone"); break; case "Coordinate": Coordinate.text = ((XmlElement)node).GetAttribute("Coordinate"); break; case "Function": Function.text = ((XmlElement)node).GetAttribute("Function"); break; case "CoveredArea": CoveredArea.text = ((XmlElement)node).GetAttribute("CoveredArea"); break; case "FireResistanceRating": FireResistanceRating.text = ((XmlElement)node).GetAttribute("FireResistanceRating"); break; case "BuildArea": BuildArea.text = ((XmlElement)node).GetAttribute("BuildArea"); break; case "BuildStructure": BuildStructure.text = ((XmlElement)node).GetAttribute("BuildStructure"); break; default: break; } } } } //绑定周边环境显示方法 public void BindArroundData() { XmlNode ArroundNode = null; if (Surroundings != null) { foreach (XmlNode node in Surroundings.ChildNodes) { switch (node.Name) { case "East": ArroundNode = node; foreach (XmlNode childnode in ArroundNode.ChildNodes) { switch (childnode.Name) { case "Road": RoadEast.text = ((XmlElement)childnode).GetAttribute("Road"); break; case "Building": BuildingEast.text = ((XmlElement)childnode).GetAttribute("Building"); break; case "Distance": DistanceEast.text = ((XmlElement)childnode).GetAttribute("Distance"); break; default: break; } } break; case "West": ArroundNode = node; foreach (XmlNode childnode in ArroundNode.ChildNodes) { switch (childnode.Name) { case "Road": RoadWest.text = ((XmlElement)childnode).GetAttribute("Road"); break; case "Building": BuildingWest.text = ((XmlElement)childnode).GetAttribute("Building"); break; case "Distance": DistanceWest.text = ((XmlElement)childnode).GetAttribute("Distance"); break; default: break; } } break; case "South": ArroundNode = node; foreach (XmlNode childnode in ArroundNode.ChildNodes) { switch (childnode.Name) { case "Road": RoadSouth.text = ((XmlElement)childnode).GetAttribute("Road"); break; case "Building": BuildingSouth.text = ((XmlElement)childnode).GetAttribute("Building"); break; case "Distance": DistanceSouth.text = ((XmlElement)childnode).GetAttribute("Distance"); break; default: break; } } break; case "North": ArroundNode = node; foreach (XmlNode childnode in ArroundNode.ChildNodes) { switch (childnode.Name) { case "Road": RoadNorth.text = ((XmlElement)childnode).GetAttribute("Road"); break; case "Building": BuildingNorth.text = ((XmlElement)childnode).GetAttribute("Building"); break; case "Distance": DistanceNorth.text = ((XmlElement)childnode).GetAttribute("Distance"); break; default: break; } } break; default: break; } } } } //绑定联动单位显示方法 public void BindPowerUnitData() { if (LinkageUnit != null) { if (LinkageUnit.ChildNodes.Count > 0) { Instantiate(PowerMsgTitle, AutoParent.transform); foreach (XmlNode node in LinkageUnit.ChildNodes) { Instantiate(BorderH, AutoParent.transform); GameObject PowerUnit = Instantiate(PowerMsgPrefab, AutoParent.transform); PowerUnit.transform.Find("NameShow").GetComponent().text = ((XmlElement)node).GetAttribute("Name"); PowerUnit.transform.Find("FaRenShow").GetComponent().text = ((XmlElement)node).GetAttribute("PersonInCharge"); PowerUnit.transform.Find("PhoneShow").GetComponent().text = ((XmlElement)node).GetAttribute("Phone"); } Instantiate(BorderH, AutoParent.transform); } } } //绑定罐区信息显示方法 public void BindOilCanData() { if (TankField != null) { if (TankField.ChildNodes.Count > 0) { Instantiate(OilCanTitle, AutoParent.transform); foreach (XmlNode node in TankField.ChildNodes) { Instantiate(BorderH, AutoParent.transform); GameObject OilCan = Instantiate(OilCanPrefab, AutoParent.transform); //PowerUnit.transform.Find("NameShow").GetComponent().text = ((XmlElement)node).GetAttribute("Name"); //PowerUnit.transform.Find("FaRenShow").GetComponent().text = ((XmlElement)node).GetAttribute("PersonInCharge"); //PowerUnit.transform.Find("PhoneShow").GetComponent().text = ((XmlElement)node).GetAttribute("Phone"); } Instantiate(BorderH, AutoParent.transform); } } } }