Loading

C# xml上传以及记录保存xml

1.xml保存

 
 private readonly string XMLSavePath = Path.Combine(Environment.CurrentDirectory, "XML", GlobalParam.Today);

public LogicalService()
{
// 创建XML日志保存目录
if (!Directory.Exists(XMLSavePath)) Directory.CreateDirectory(XMLSavePath);
}


#region 保存交互的XML /// <summary> /// 保存XML交互数据 /// </summary> /// <param name="xml">json</param> /// <param name="fileName">保存名称</param> /// <param name="inOrOut">输入还是输入json</param> private void SaveInteractiveXMLData(string xml, string fileName, bool inOrOut) { if(GlobalParam.Params.SaveInteractiveXMLData == "1") { // 拼接完整文件名 if(inOrOut) fileName = Path.Combine(XMLSavePath, $"{fileName}_In.xml"); else fileName = Path.Combine(XMLSavePath, $"{fileName}_Out.xml"); // 创建文件并保存 if (File.Exists(fileName)) File.Delete(fileName); using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write)) { byte[] bytes = Encoding.Default.GetBytes(xml); fs.Write(bytes, 0, bytes.Length); } } } #endregion

2.拼接XML案例

#region 获取上传用XML文件
        private string GetXML(StudentSignUploadInfo entity, int djc)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("<?xml version=\"1.0\" encoding=\"GBK\"?>");
            // 根节点
            sb.Append("<drvexam>");
            // 流水号
            sb.Append("<lsh>").Append(entity.Lsh).Append("</lsh>");
            // 考场代码
            sb.Append("<kcdm>").Append(entity.Kcdm).Append("</kcdm>");
            // 考试科目
            sb.Append("<kskm>").Append(entity.Kskm).Append("</kskm>");
            // 身份证明号码
            sb.Append("<sfzmhm>").Append(entity.Sfzmhm).Append("</sfzmhm>");
            // 培训驾校简称
            sb.Append("<jxjc>").Append(entity.Jxmc).Append("</jxjc>");
            // 考试日期
            sb.Append("<ksrq>").Append(entity.Ksrq).Append("</ksrq>");
            // 预约次数
            sb.Append("<yycs>").Append(entity.Yycs).Append("</yycs>");
            // 考试车号
            sb.Append("<ksch>").Append(entity.Kcbh).Append("</ksch>");
            // 考试员签名
            sb.Append("<ksyqm>").Append(entity.Kgqmzp).Append("</ksyqm>");
            // 考生签名
            sb.Append("<ksqm>").Append(entity.Ksqmzp).Append("</ksqm>");
            // 人证(门禁)照片
            sb.Append("<rzzp>").Append(entity.Rzzp).Append("</rzzp>");
            #region 第一次
            if (djc == 1)
            {
                // 本次预约考试次数
                sb.Append("<bcyykscs>").Append(1).Append("</bcyykscs>");
                // 考试开始时间
                sb.Append("<kssj>").Append(entity.Kssj1).Append("</kssj>");
                // 考试结束时间
                sb.Append("<jssj>").Append(entity.Jssj1).Append("</jssj>");
                // 考试成绩
                sb.Append("<kscj>").Append(entity.Jgfs1).Append("</kscj>");
                // 扣分项
                sb.Append("<kfx>").Append(entity.Kfxx1).Append("</kfx>");
                // 考试过程照片1
                sb.Append("<gczp1>").Append(entity.Zp1_1).Append("</gczp1>");
                // 照片拍摄时间1
                sb.Append("<pssj1>").Append(entity.Zp1sj_1).Append("</pssj1>");
                // 考试过程照片2
                sb.Append("<gczp2>").Append(entity.Zp2_1).Append("</gczp2>");
                // 照片拍摄时间2
                sb.Append("<pssj2>").Append(entity.Zp2sj_1).Append("</pssj2>");
                // 考试过程照片3
                sb.Append("<gczp3>").Append(entity.Zp3_1).Append("</gczp3>");
                // 照片拍摄时间3
                sb.Append("<pssj3>").Append(entity.Zp3sj_1).Append("</pssj3>");
            }
            #endregion
            #region 第二次
            else
            {
                // 本次预约考试次数
                sb.Append("<bcyykscs>").Append(2).Append("</bcyykscs>");
                // 考试开始时间
                sb.Append("<kssj>").Append(entity.Kssj2).Append("</kssj>");
                // 考试结束时间
                sb.Append("<jssj>").Append(entity.Jssj2).Append("</jssj>");
                // 考试成绩
                sb.Append("<kscj>").Append(entity.Jgfs2).Append("</kscj>");
                // 扣分项
                sb.Append("<kfx>").Append(entity.Kfxx2).Append("</kfx>");
                // 考试过程照片1
                sb.Append("<gczp1>").Append(entity.Zp1_2).Append("</gczp1>");
                // 照片拍摄时间1
                sb.Append("<pssj1>").Append(entity.Zp1sj_2).Append("</pssj1>");
                // 考试过程照片2
                sb.Append("<gczp2>").Append(entity.Zp2_2).Append("</gczp2>");
                // 照片拍摄时间2
                sb.Append("<pssj2>").Append(entity.Zp2sj_2).Append("</pssj2>");
                // 考试过程照片3
                sb.Append("<gczp3>").Append(entity.Zp3_2).Append("</gczp3>");
                // 照片拍摄时间3
                sb.Append("<pssj3>").Append(entity.Zp3sj_2).Append("</pssj3>");
            }
            #endregion

            sb.Append("</drvexam>");

            return sb.ToString();
        }
        #endregion
View Code

 

3.上传XML

  #region[构建请求,获取数据]
        private bool UploadXML(string xml, out string message)
        {
            bool result = true;
            message = string.Empty;
            try
            {
                HttpWebRequest request = null;
                request = WebRequest.Create(GlobalParam.Params.RemoteWebServiceUrl) as HttpWebRequest;
                request.Method = "POST";
                request.ContentType = "application/xml";

                using (Stream requestStream = request.GetRequestStream())
                {
                    using (StreamWriter sw = new StreamWriter(requestStream, Encoding.GetEncoding("GBK")))
                    {
                        sw.Write(xml);
                    }
                }

                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                using (Stream responseStream = response.GetResponseStream())
                {
                    using (StreamReader sr = new StreamReader(responseStream))
                    {
                        message = sr.ReadToEnd();
                    }
                }
            }
            catch (Exception ex)
            {
                log4NetUtil.Error("UploadXML", ex);
                message = $"{ex.Message}";
                result = false;
            }
            return result;
        }
        #endregion

4.调用参考

   // 生成XML
                    string xml = this.GetXML(entity, 2);
                    // 保存输入XML
                    this.SaveInteractiveXMLData(xml, $"{entity.Xm}_{entity.Sfzmhm}_2", true);
                    // 上传
                    bool result = UploadXML(xml, out xml);
                    if (result)
                    {
                        if (!string.IsNullOrEmpty(xml))
                        {
                            // 保存输出XML
                            this.SaveInteractiveXMLData(xml, $"{entity.Xm}_{entity.Sfzmhm}_2", false);
                            // 解析XML
                            XmlDocument xmlDoc = new XmlDocument();
                            xmlDoc.LoadXml(xml);
                            XmlNode node = xmlDoc.SelectSingleNode("/result");
                            string code = node.Attributes["code"].Value;
                            string message = node.Attributes["message"].Value;
                            // 成功
                            if (code == "1")
                            {
                                this.SaveSignUploadResultToDB(entity, true);
                                entity.KL_sign_upload_2 = 1;
                                entity.UploadMessage_2 = message;
                            }
                            // 失败
                            else
                            {
                                entity.UploadMessage_2 = $"上传失败:{code}_{message}";
                                SoundPlayerUtils.PlaySound();
                                return;
                            }
                        }
                        else
                        {
                            entity.UploadMessage_2 = $"调用上传接口无返回";
                            return;
                        }
                    }
                    else
                    {
                        entity.UploadMessage_2 = $"调用上传接口失败:{xml}";
                        return;
                    }

 

posted @ 2021-06-23 16:59  云辰  阅读(391)  评论(0编辑  收藏  举报