/// <summary> /// 获取小题列表 /// </summary> /// <returns></returns> public string GetQuestionList() { StringBuilder sb = new StringBuilder(); XmlElement list = XmlHelper.GetXmlElement(paperInfoPath, "PaperInfo/ItemList"); foreach (XmlNode node in list) { string QuestionNO = node.SelectSingleNode("xtdm").InnerText; //小题代码 string SectionNO = node.SelectSingleNode("dth").InnerText; //大题号 string QuestionTypeNO = node.SelectSingleNode("xtlx").InnerText; string QuestionName = ""; // node.SelectSingleNode("xtdm").InnerText; string StandardAnswer = node.SelectSingleNode("rightKey").InnerText; string TxtAnswerPath = node.SelectSingleNode("xtdm").InnerText; string AudioAnswerPath = ""; // node.SelectSingleNode("xtdm").InnerText; string StandardScore = node.SelectSingleNode("mf").InnerText; //满分 string QuestionMemo = node.SelectSingleNode("xtms").InnerText; //小题描述 string CheckNumber = ""; // node.SelectSingleNode("xtdm").InnerText; string PageNO = ""; // node.SelectSingleNode("xtdm").InnerText; string GlobalIndex = ""; // node.SelectSingleNode("xtdm").InnerText; string Index = node.SelectSingleNode("xth").InnerText; //小题号 string MaxFontCount = ""; // node.SelectSingleNode("xth").InnerText;// sb.Append("<Question name=\"Question\" id=\"" + Index + "\">"); sb.Append(string.Format(Question, QuestionNO, SectionNO, QuestionTypeNO, QuestionName, StandardAnswer, TxtAnswerPath, AudioAnswerPath, StandardScore, QuestionMemo, CheckNumber, PageNO, GlobalIndex, Index, MaxFontCount)); sb.Append("</Question>"); } return(sb.ToString()); }
/// <summary> /// 获取章节列表 /// </summary> /// <returns></returns> public string GetSectionList() { StringBuilder sb = new StringBuilder(); XmlElement list = XmlHelper.GetXmlElement(paperInfoPath, "PaperInfo/PaperQuesList "); foreach (XmlNode node in list) { string ParentNO = "0"; string SectionNO = node.SelectSingleNode("dth").InnerText; //大题号 string SectionName = node.SelectSingleNode("dtmc").InnerText; //大题/章节名称 string StandardScore = node.SelectSingleNode("mf").InnerText; //满分 string SectionMemo = ""; string SectionSavePath = ""; string Index = SectionNO; sb.Append("<Section name=\"Section\" id=\"1\">"); sb.Append(string.Format(Section, ParentNO, SectionNO, SectionName, StandardScore, Index)); sb.Append("</Section>"); } return(sb.ToString()); }
/// <summary> /// 展示nets和spoken试卷结构 /// </summary> /// <param name="paperInfo"></param> /// <param name="requestData"></param> private void ShowPaper(string paperInfoPath) { string NetsPaperNO = XmlHelper.Read(paperInfoPath, "PaperInfo/PaperList/PaperData/sjdm", "");//试卷代码 string workPath = txt_work.Text.Trim(); DirectoryInfo diWork = new DirectoryInfo(workPath); DirectoryInfo[] diList = diWork.GetDirectories(); bool flag = false; foreach (DirectoryInfo di in diList) { FileInfo[] fiList = di.GetFiles(); foreach (FileInfo fi in fiList) { if (fi.Name == "paper.xml") { updateFile = fi; string SpokenPaperNo = XmlHelper.Read(fi.FullName, "Paper/PaperInfo/PaperNO", ""); //试卷代码 string SpokenPaperName = XmlHelper.Read(fi.FullName, "Paper/PaperInfo/PaperName", ""); //试卷代码 //nets树结构 string netsPaperName = XmlHelper.Read(paperInfoPath, "PaperInfo/PaperList/PaperData/sjmc", "");//试卷代码 TreeNode parentNode = new TreeNode(netsPaperName); treeView2.Nodes.Clear(); treeView2.Nodes.Add(parentNode); parentNode.Nodes.Add(NetsPaperNO); XmlElement xe = XmlHelper.GetXmlElement(paperInfoPath, "PaperInfo/PaperQuesList"); XmlNodeList xnl = xe.ChildNodes; List <string> sectionList = new List <string>(); List <string> list = new List <string>(); foreach (XmlNode xn in xnl) { TreeNode tnode = new TreeNode(xn.SelectSingleNode("dtmc").InnerText + "(" + xn.SelectSingleNode("dth").InnerText + ")"); xe = XmlHelper.GetXmlElement(paperInfoPath, "PaperInfo/ItemList"); xnl = xe.ChildNodes; foreach (XmlNode xn1 in xnl) { if (xn1.SelectSingleNode("dth").InnerText == xn.SelectSingleNode("dth").InnerText) { //剔除掉1-5,6-10这种小题 if (xn1.SelectSingleNode("xtlx").InnerText == "SINGLE" || xn1.SelectSingleNode("xtlx").InnerText == "SPOKEN") { TreeNode tnode1 = new TreeNode(xn1.SelectSingleNode("xtdm").InnerText); tnode.Nodes.Add(tnode1); list.Add(xn1.SelectSingleNode("xtdm").InnerText); } } } sectionList.Add(xn.SelectSingleNode("dth").InnerText); parentNode.Nodes.Add(tnode); } treeView2.ExpandAll(); nets_dict = new Dictionary <string, object>(); nets_dict.Add("paperNo", NetsPaperNO); nets_dict.Add("paperName", netsPaperName); nets_dict.Add("questionList", list); nets_dict.Add("sectionList", sectionList); txt_paperNO.Text = NetsPaperNO; if (NetsPaperNO == SpokenPaperNo) { parentNode = new TreeNode(SpokenPaperName); treeView1.Nodes.Clear(); treeView1.Nodes.Add(parentNode); parentNode.Nodes.Add(SpokenPaperNo); //spoken树结构 xe = XmlHelper.GetXmlElement(fi.FullName, "Paper/SectionList"); xnl = xe.ChildNodes; sectionList = new List <string>(); list = new List <string>(); foreach (XmlNode xn in xnl) { TreeNode tnode = new TreeNode(xn.SelectSingleNode("SectionName").InnerText + "(" + xn.SelectSingleNode("SectionNO").InnerText + ")"); xe = XmlHelper.GetXmlElement(fi.FullName, "Paper/QuestionList"); xnl = xe.ChildNodes; foreach (XmlNode xn1 in xnl) { if (xn1.SelectSingleNode("SectionNO").InnerText == xn.SelectSingleNode("SectionNO").InnerText) { TreeNode tnode1 = new TreeNode(xn1.SelectSingleNode("QuestionNO").InnerText); tnode.Nodes.Add(tnode1); list.Add(xn1.SelectSingleNode("QuestionNO").InnerText); } } sectionList.Add(xn.SelectSingleNode("SectionNO").InnerText); parentNode.Nodes.Add(tnode); } treeView1.ExpandAll(); spoken_dict = new Dictionary <string, object>(); spoken_dict.Add("paperNo", SpokenPaperNo); spoken_dict.Add("paperName", SpokenPaperName); spoken_dict.Add("questionList", list); spoken_dict.Add("sectionList", sectionList); flag = true; break; } } if (flag) { break; } } } }
/// <summary> /// 解压nets试卷包 /// </summary> /// <param name="filePaper"></param> /// <param name="fileCode"></param> /// <param name="tempPath"></param> private void unZipNetsPaper(FileInfo[] netsPaperFileList) { string tempPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "netsTemp"); FileHelper.DeleteFolder(tempPath); Directory.CreateDirectory(tempPath); foreach (FileInfo f in netsPaperFileList) { string filePaper = f.FullName; string fileCode = filePaper.Replace(".otp", ".osqm"); if (f.Extension.Equals(".otp")) { //1、复制源文件到临时目录 string filePaperTemp = Path.Combine(tempPath, new FileInfo(filePaper).Name); string fileCodeTemp = Path.Combine(tempPath, new FileInfo(fileCode).Name); FileHelper.FileCopy(filePaper, filePaperTemp, true); FileHelper.FileCopy(fileCode, fileCodeTemp, true); //2、固定密码解密otp,并解压 string fileName = f.Name.Replace(".otp", ""); string paperTemp = tempPath + "\\paperTemp\\" + fileName; int result1 = SecModule.FileVerify(NETSPWD, filePaperTemp); FileCompress.DecompressFile(filePaperTemp, paperTemp, NETSPWD, null); //3、固定密码解密osqm,并解压 string codeTemp = tempPath + "\\codeTemp\\" + fileName; int result2 = SecModule.FileVerify(NETSPWD, fileCodeTemp); FileCompress.DecompressFile(fileCodeTemp, codeTemp, NETSPWD, null); //4、授权码解密试卷包,并解压 string sqmm = XmlHelper.Read(codeTemp + "\\Codeinfo.xml", "CodeInfo/CodeData/sqmm", ""); FileInfo[] fileList = new DirectoryInfo(paperTemp).GetFiles(); foreach (FileInfo fi in fileList) { if (fi.Extension.Equals(".zip")) { int a = SecModule.FileVerify(sqmm, fi.FullName); FileCompress.DecompressFile(fi.FullName, paperTemp, NETSPWD, null); } } //5、固定密码解密kjs,并解压 string kjsForder = ""; fileList = new DirectoryInfo(paperTemp).GetFiles(); foreach (FileInfo fi in fileList) { if (fi.Extension.Equals(".kjs")) { int result3 = SecModule.FileVerify(NETSPWD, fi.FullName); kjsForder = paperTemp + "\\" + fi.Name.Replace(".kjs", ""); FileCompress.DecompressFile(fi.FullName, kjsForder, NETSPWD, null); //提取nets试卷xml中数据 FileInfo[] filePaperXmlList = new DirectoryInfo(paperTemp).GetFiles("PaperInfo.xml"); FileInfo filePaperXml = filePaperXmlList[0]; XmlElement xe = XmlHelper.GetXmlElement(filePaperXml.FullName, "/PaperInfo/PaperList"); XmlNodeList xnl = xe.ChildNodes; PaperEntity pe = new PaperEntity();; foreach (XmlNode xn in xnl) { pe.paperNo = xn.SelectSingleNode("sjdm").InnerText; } XmlElement xe1 = XmlHelper.GetXmlElement(filePaperXml.FullName, "/PaperInfo/ItemList"); XmlNodeList xnl1 = xe1.ChildNodes; List <string> lists = new List <string>(); foreach (XmlNode xn1 in xnl1) { lists.Add(xn1.SelectSingleNode("xtdm").InnerText); } pe.questionNo = lists; listPaperEntity.Add(pe); } } } //DoPaper(paperTemp + "\\PaperInfo.xml", kjsForder + "\\js\\requestData.json"); } }