• 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

  • 相关阅读:
    (三十九)golang--反序列化
    (三十八)golang--json(对切片、map、结构体进行序列化)
    (三十七)golang--如何获取命令行参数
    (三十六)golang--文件的基本操作
    golang实战--客户信息管理系统
    Linux系统的LOG日志文件及入侵后日志的清除
    Linux下清除系统日志方法
    linux log日志解析
    linux添加开机自启动脚本示例详解
    linux添加开机启动项的方法介绍
  • 原文地址:https://www.cnblogs.com/yunchen/p/14923543.html
Copyright © 2020-2023  润新知