//Essay分類,各分類特殊需求操作 public List<string> findkey(XmlNode N2) { string type = ""; string mainKey = "Nu11"; XmlNodeList N3D, N3I, N4IR, N4QI, N4DU, N5QIR; List<string> Key = new List<string>(); Essay_exam_reader xml_reader = new Essay_exam_reader(); N3D = xml_reader.xml_reader_N3_data(N2); N3I = xml_reader.xml_reader_N3_instruction(N2); //Analytics question if (N2.Attributes["minimal"].Value == "yes") { //type1,2 //Analytics instruction foreach (XmlNode N3 in N3I) { //set type if (N3.HasChildNodes) { //type1 type = "type-1"; Key.Add(type); N4IR = xml_reader.xml_reader_N4_instruction_ref(N2); foreach (XmlNode N4 in N4IR) { mainKey = N4.Attributes["target"].Value.Trim(); } } else { //type2 type = "type-2"; Key.Add(type); } //Analytics instruction by nlp String instruction = N3.InnerText; foreach (string k in nlp(instruction)) { Key.Add("#/" + k.Trim()); } } //Analytics data foreach (XmlNode N3 in N3D) { if (N3.Attributes["id"].Value.Trim() == mainKey) { //all main key String data = N3.InnerText; string[] datalist = data.Split(','); foreach (string d in datalist) { Key.Add("@/" + d.Trim()); } } else { //Analytics data by nlp foreach (string k in nlp(N3.InnerText)) { Key.Add("#/" + k.Trim()); } } } } else { //type3,4 //Analytics instruction foreach (XmlNode N3 in N3I) { //set type if (N3.HasChildNodes) { //type3 type = "type-3"; Key.Add(type); } else { //type4 type = "type-4"; Key.Add(type); } //Analytics instruction by nlp foreach (string k in nlp(N3.InnerText)) { Key.Add("#/" + k.Trim()); } } //Analytics data foreach (XmlNode N3 in N3D) { //Analytics data by nlp foreach (string k in nlp(N3.InnerText)) { Key.Add("#/" + k.Trim()); } } //Analytics question_instruction N4QI = xml_reader.xml_reader_N4_question_instruction(N2); N4DU = xml_reader.xml_reader_N4_data_utext(N2); N5QIR = xml_reader.xml_reader_N5_question_instruction_ref(N2); foreach (XmlNode N4 in N4QI) { //have ref target if (N5QIR != null) { foreach (XmlNode N5 in N5QIR) { try { string tager = N5.Attributes["target"].Value; foreach (XmlNode N4_5 in N4DU) { if (N4_5.Attributes["id"].Value == tager) { string[] w = N4_5.InnerText.Split(')'); Key.Add("@/" + w[1].Trim()); break; } } } catch (Exception e) { } } } //Analytics question_instruction by nlp foreach (string k in nlp(N4.InnerText)) { Key.Add("#/" + k.Trim()); } } } Key = delete_repeat_key(Key); return Key; }