/// <summary> /// 解密nets试卷 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btn_decode_Click(object sender, EventArgs e) { string tempPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "temp_nets_paper"); FileHelper.DeleteFolder(tempPath); Directory.CreateDirectory(tempPath); if (!File.Exists(filePaper) || !File.Exists(fileCode)) { MessageBox.Show("请选择试卷包和授权码!"); return; } //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 paperTemp = tempPath + "\\paperTemp"; int result1 = SecModule.FileVerify(PWD, filePaperTemp); FileCompress.DecompressFile(filePaperTemp, paperTemp, PWD, null); //3、固定密码解密osqm,并解压 string codeTemp = tempPath + "\\codeTemp"; int result2 = SecModule.FileVerify(PWD, fileCodeTemp); FileCompress.DecompressFile(fileCodeTemp, codeTemp, PWD, 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, PWD, null); } } //5、固定密码解密kjs,并解压 string kjsForder = ""; fileList = new DirectoryInfo(paperTemp).GetFiles(); foreach (FileInfo fi in fileList) { if (fi.Extension.Equals(".kjs")) { int result3 = SecModule.FileVerify(PWD, fi.FullName); kjsForder = paperTemp + "\\" + fi.Name.Replace(".kjs", ""); FileCompress.DecompressFile(fi.FullName, kjsForder, PWD, null); } } ShowPaper(paperTemp + "\\PaperInfo.xml"); }
public string GetQuestionTypeList() { string QuestionTypeNO = XmlHelper.Read(paperInfoPath, "PaperInfo/PackList/PackData/zbwjm", ""); //试卷名称 string ParentNO = XmlHelper.Read(paperInfoPath, "PaperInfo/PaperList/PaperData/sjdm", ""); //试卷代码 string QuestionTypeName = ""; //试卷说明 string QuestionMemo = XmlHelper.Read(paperInfoPath, "PaperInfo/PaperList/PaperData/sjlx", ""); return(string.Format(PaperInfo, QuestionTypeNO, ParentNO, QuestionTypeName, QuestionMemo)); }
public string GetPaperInfo() { string PaperName = XmlHelper.Read(paperInfoPath, "PaperInfo/PackList/PackData/zbwjm", ""); //试卷名称 string PaperNO = XmlHelper.Read(paperInfoPath, "PaperInfo/PaperList/PaperData/sjdm", ""); //试卷代码 string PaperMemo = ""; //试卷说明 string PaperType = XmlHelper.Read(paperInfoPath, "PaperInfo/PaperList/PaperData/sjlx", ""); string ExamTime = ""; //考试时间 string ShowModel = "0"; //试卷显示模式, ShowModel值为(1或2) 1为:800*600;2:1024*768 //(新增)试卷所使用的考试场次,默认值为0,表示可用于任何考试场次,用于多个场次时,中间用逗号隔开,比如:1,3,5 string Times = XmlHelper.Read(paperInfoPath, "PaperInfo/PaperList/PaperData/kspc", ""); string Version = ""; string CreateTime = ""; string EditTime = ""; return(string.Format(PaperInfo, PaperName, PaperNO, PaperMemo, PaperType, ExamTime, ShowModel, Times, Version, CreateTime, EditTime)); }
/// <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"); } }