zoukankan      html  css  js  c++  java
  • 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;
                        }

    本文来自博客园,作者:云辰,转载请注明原文链接:https://www.cnblogs.com/yunchen/p/14923543.html

  • 相关阅读:
    flex + bison multiple parsers
    Educational Codeforces Round 95 (Rated for Div. 2)
    python学习笔记 day20 序列化模块(二)
    python学习笔记 day20 常用模块(六)
    python 学习笔记 常用模块(五)
    python学习笔记 day19 常用模块(四)
    python学习笔记 day19 常用模块(三)
    python学习笔记 day19 常用模块(二)
    python学习笔记 day19 作业讲解-使用正则表达式实现计算器
    python学习笔记 day19 常用模块
  • 原文地址:https://www.cnblogs.com/yunchen/p/14923543.html
Copyright © 2011-2022 走看看