using System.Collections.Generic; using System.Xml; namespace OTSDataType { public struct StringRes { public int key; public string text; public string Description; public string DownList; } public class ResGroup { public int key; public string text = ""; public string Description = ""; public string DownList = ""; public SortedDictionary mapRes = new SortedDictionary(); } public class XmlResourceData { static XmlResourceData instance =new XmlResourceData(); private SortedDictionary resGroup = new SortedDictionary(); public XmlResourceData() { LoadStringFromXml(); } public void GetStringByKey(int grpKey, int itmKey, ref string text, ref string des,ref string downlist) { text = resGroup[grpKey].mapRes[itmKey].text; des = resGroup[grpKey].mapRes[itmKey].Description; downlist = resGroup[grpKey].mapRes[itmKey].DownList; } public string GetStringByKey(int grpKey, int itmKey) { return resGroup[grpKey].mapRes[itmKey].text; } public string GetStringByKey(int itmKey) { return resGroup[0].mapRes[itmKey].text; } public string GetGroupTextByKey(int grpKey) { return resGroup[grpKey].text; } public void GetGroupTextByKey(int grpKey, ref string text, ref string des) { text = resGroup[grpKey].text; des = resGroup[grpKey].Description; } public void SetStringByKey(int grpkey, int itmkey, string value, string des) { StringRes sr = new StringRes(); sr.text = value; sr.Description = des; resGroup[grpkey].mapRes[itmkey] = sr; } public bool LoadStringFromXml() { XmlDocument xml = new XmlDocument(); xml.Load(".\\Resources\\XMLData\\LanguageDefine.xml"); XmlNode root = xml.SelectSingleNode("Language"); XmlNode root2 = root.SelectSingleNode("DefaultLanguage"); string ss = root2.InnerText; XmlDocument doc1 = new XmlDocument(); if (ss == "EN") { doc1.Load(".\\Resources\\XMLData\\ResourceForCpp\\ResourceForReport-EN.xml");//载入xml文件 } else if (ss == "ZH") { doc1.Load(".\\Resources\\XMLData\\ResourceForCpp\\ResourceForReport-ZH.xml");//载入xml文件 } root = doc1.SelectSingleNode("XMLData"); root2 = root.SelectSingleNode("collection"); XmlNodeList childlist = root2.ChildNodes; for (int i = 0; i < childlist.Count; i++) { int colkey = -1; if (childlist[i].Attributes["grpKey"] != null) { colkey = int.Parse(childlist[i].Attributes["grpKey"].Value); } string colText = ""; if (childlist[i].Attributes["text"] != null) { colText = childlist[i].Attributes["text"].Value; } string colDes = ""; if (childlist[i].Attributes["description"] != null) { colDes = childlist[i].Attributes["description"].Value; } ResGroup rg = new ResGroup(); rg.key = colkey; rg.text = colText; rg.Description = colDes; XmlNodeList childlist2 = childlist[i].ChildNodes; for (int j = 0; j < childlist2.Count; j++) { StringRes sr = new StringRes(); int key = int.Parse(childlist2[j].Attributes["itemKey"].Value); sr.key = key; sr.text = childlist2[j].Attributes["itemText"].Value; if (childlist2[j].Attributes["boDownList"] != null) { sr.DownList = childlist2[j].Attributes["boDownList"].Value; } else { sr.DownList = "空"; } if (childlist2[j].Attributes["description"] != null) { sr.Description = childlist2[j].Attributes["description"].Value; } else { sr.Description = "空"; } try { rg.mapRes[key] = sr; } catch (System.Exception ex) { // MessageBox.Show(ex.ToString()); } } resGroup[colkey] = rg; } return true; } public static XmlResourceData GetInstance() { //static MultiLang instance; if (instance == null) { instance.LoadStringFromXml(); } return instance; } } }