MH/T4029.3 IFPL报文解析


MH/T4029.3是民航业用来规定飞行计划相关数据交互的规范,今天我们先来解析下其中I类的IFPL报文.
我们先来看看IFPL报文长啥样.

ZCZC
-TITLE IFPL
-FILTIM 010909
-IFPLID 201332005
-SOURCE AIRNET:ZUCK
-ARCID CSN6435
-ADEP ZBAA
-ADES ZUUU
-EOBD 20130301
-EOBT 0850
-SSRCODE A1270
NNNN

其中ZCZC是报文的开头标记,NNNN是报文的结束标记,没有实际意义

反序列化

  1. 下面我们根据报文创建我们的对象,忽略报头和报尾
    class IFPL
    {
        public string TITLE { get; set; }
        public string FILTIM { get; set; }
        public string IFPLID { get; set; }
        public string SOURCE { get; set; }
        public string ARCID { get; set; }
        public string ADEP { get; set; }
        public string ADES { get; set; }
        public string EOBD { get; set; }
        public string EOBT { get; set; }
        public string SSRCODE { get; set; }
    }
  1. 下面我们安装下MH/T4029.3报文解析工具,程序包控制台输入命令:
    Install-Package Extensioner.MHT40293 -Version 1.0.0
  2. 反序列化报文
            var message = @"ZCZC
-TITLE IFPL
-FILTIM 010909
-IFPLID 201332005
-SOURCE AIRNET:ZUCK
-ARCID CSN6435
-ADEP ZBAA
-ADES ZUUU
-EOBD 20130301
-EOBT 0850
-SSRCODE A1270
NNNN";

            var model = MessageConvert.DeserializeObject<IFPL>(message);

            Console.ReadKey();

反序列化后的对象如下图:

是不是很简单?

序列化

反过来我们有时候需要把对象转换为MH/T4029.3报文,怎么办呢?也很简单!类库已经帮我们封装好了方法,我们直接调用即可.
我们把上面的model序列化然后打印一下

            var value = MessageConvert.SerializeObject(model);

            Console.WriteLine(value);

序列化后的报文入下图:

So easy!

完整代码如下:

点击查看代码
using Extensioner.MHT40293;
using System;

namespace MHT40293.IFPLTest
{
    class Program
    {
        static void Main(string[] args)
        {
            var message = @"ZCZC
-TITLE IFPL
-FILTIM 010909
-IFPLID 201332005
-SOURCE AIRNET:ZUCK
-ARCID CSN6435
-ADEP ZBAA
-ADES ZUUU
-EOBD 20130301
-EOBT 0850
-SSRCODE A1270
NNNN";

            var model = MessageConvert.DeserializeObject<IFPL>(message);

            var value = MessageConvert.SerializeObject(model);

            Console.WriteLine(value);

            Console.ReadKey();
        }
    }

    class IFPL
    {
        public string TITLE { get; set; }
        public string FILTIM { get; set; }
        public string IFPLID { get; set; }
        public string SOURCE { get; set; }
        public string ARCID { get; set; }
        public string ADEP { get; set; }
        public string ADES { get; set; }
        public string EOBD { get; set; }
        public string EOBT { get; set; }
        public string SSRCODE { get; set; }
    }

}

文章来源:https://www.cnblogs.com/extensioner/p/mht40293.html

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
管理员
上一篇:iNeuOS工业互联网操作系统,发布3.6.4版本:云端安全控制和实时日志功能,附Chrome、Firefox和Edge浏览器测试性能对比
下一篇:记一次 .NET 某市附属医院 Web程序 偶发性CPU爆高分析
评论列表

发表评论

评论内容
昵称:
关联文章

MH/T4029.3 IFPL
C# 利用SharpZipLib对*.rar压缩文件
Vue.js中如何限制Props只接受特定数组值:自定义验证方法
DevExpress 19.2 破
C# ThoughtWorks.QRCode 二维码生成和
博客文章博排版指南
Roslyn+T4+EnvDTE项目完全自动化(3) ——生成c++代码
C# 扫描识别图片中的字(.NET Framework)
PC端编译错 Empty block statement no-empty
C# 7.0 - C# 7.3 中的新增功能
微信支付: API V3支付回调签名验证
vue3+vist 打包空白
.Net启动程序错:It was not possible to find any compatible framework version
Python读取文件 发生异常: UnicodeDecodeError 'gbk' codec can't decode byte
WCF中常见的错:The content type text
记一次本地正常上线接口404
Winform开发的快速、健壮、耦的几点建议
插入代码页面
.NET Core 运行时T4模板使用,T4生成代码
IIS中应用程序池自动停止,重启

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码