php 解析mib文件,Mib库解析
MibAnalyser
介绍
MibAnalyser可以解析MIB文件,并转化为对应的实体,持久化到本地。MibAnalyser分为三个模块:解析模块、持久化模块、工具库模块。
解析模块
解析模块用于解析MIB文件的语法,并最终生成实体列表。
管理模块
由于对MIB文件解析时需要依赖到其他的MIB文件,该子模块用于读取其他MIB的节点数据。
该模块的接口是IMIBManager,系统实现类是MIBManager。
节点解析模块
节点解析模块会解析MIB文件的语法,把里面的节点提取出来并转化为对应的实体类型。当前生成的节点类型并不完整,需要通过节点连接模块加功后才能生成完整的节点信息。
该模块的接口是IMIBSyntaxAnalyzer,系统实现类MIBSyntaxAnalyzer。
节点连接模块
对半完成的节点列表进行关联操作,生成完整节点的节点列表。
该模块的接口是INodeLinker,系统实现类是NodeLinker。
持久化模块
持久化模块是mib文件与底层数据直接访问的模块,用于存储和读取OID节点。
数据访问组件
数据访问组件由多个数据访问接口构成,主要职责是与底层数据存储进行交互,读取持久化的数据并生成对应的实体。
本系统的数据访问模块主要包括两个接口:IMIBModuleDao, IMIBNodeDao。这两个接口定义了解析模块所需要用到的访问数据的方法。
IMIBModuleDao:判断指定MIB库是否存在。
IMIBNodeDao:根据指定MIB库获取其定义的节点集合。
本系统为两个数据访问接口提供了实现类MIBFileDao,该实现类主要把数据持久化到本地文件系统。
实体序列化组件
实体序列化组件是MIBFileDao使用到的组件之一,该组件把各种类型的节点实体序列化成json格式,以及从Json逆序列化成对应的节点,十分灵活。
实体转化器
实体转化器可以实现解析实体和其他实体之间的映射,通常使用者自行定义了用于持久化的实体,则可以通过转换器进行解析实体和自定义实体的互相转换。
该模块的接口是IConverter。系统实现了抽象类Converter,Converter实现了IConverter接口,并实现了一个默认转换方法:根据属性名进行转化,获取待转化对象相同属性名属性,并进行赋值操作。
自定义持久化实体
系统提供的默认持久化实体就是解析实体,且保存到本地本件夹。如果使用者希望存储到其他位置如数据库,则需要自定义持久化实体。
自定义持久化需要使用者重新定义三样东西:
自定义的数据访问组件:由于解析模块中需要对底层的数据进行访问,因此在自定义持久化时候,需要实现数据访问模块中的接口并组装成数据访问组件传入解析模块,确保解析模块的正常执行。
自定义实体:由于持久化本质是底层数据与实体的映射,因此自定义的持久化方式通常会有对应匹配的实体。如果默认的解析实体能够匹配上自定义的持久化方式,这里则可以不需要定义新的实体。
实体转化接口:假如使用者定义了自定义实体,则需要实现实体转化接口,实现对默认解析实体和自定义实体的映射。为了方便使用者的使用,接口自身实现了一个默认的转化方法:发现转化实体和待转化实体相同的属性名,并把转化实体该属性的值赋给待转化实体的属性中。
工具库模块
工具库提供了一些常用的方法,简化使用这使用的难度。
核心工具库:OID列表转化为树状结构的功能,在OID树中寻找指定OID节点。
格式化工具库:对OID树进行剪枝等操作,对文本字符串进行处理等方法。
展示工具库:提供了把OID树转化为zTree数据格式。
工具库处理的对象都是解析实体,自定义持久化实体的使用者需要先把持久化实体转化为解析实体再使用。
MibAnalyserDemo
一个展示MibAnalyser的demo。
环境
springboot + hibernate + MibAnalyser
MibAnalyser
使用了默认的解析框架和逻辑
自定义了持久化实体,存于数据库。并定义了相关的接口层和转化器。
前端
jquery + bootstrap + angularjs
使用了zTree用于展示树状结构。
php 解析mib文件,Mib库解析相关推荐
- java 解析xls 文件_java简单解析xls文件的方法示例【读取和写入】
本文实例讲述了java简单解析xls文件的方法.分享给大家供大家参考,具体如下: 读取: import java.io.*; import jxl.*; import jxl.write.*; imp ...
- spark解析csv文件_Spark:解析CSV文件并按列值分组
spark解析csv文件 我发现自己经常使用大型CSV文件,并且意识到我现有的工具集不能让我快速浏览它们,我以为我会花一些时间在Spark上看看是否有帮助. 我正在使用芝加哥市发布的犯罪数据集 :它的 ...
- nginx解析php文件设置_nginx 解析php conf配置文件
本博客的nginx 配置文件 server { listen 80;#80和443端口同时监听 listen 443 ssl; server_name www.koukousky.com koukou ...
- c++ 3d 解析wrl文件_单晶解析的第一步
单晶解析需要两个文件,即衍射文件(hkl file)和指令文件(ins file),关于这俩个文件的简介可以去看之前的两篇推文:<晶体解析与精修-衍射数据文件(hkl)>和<晶体解析 ...
- swf文件解析(一) 文件header部分解析
SWF(shock wave flash)是ADOBE公司的动画设计软件Flash的专用格式. 这种格式具有许多优点,诸如可扩展性高,网络传输需求低,对外部依赖(如字体)依赖小,硬件需求小等. SWF ...
- 解析las文件_Java读取解析激光点云数据(Las/Laz)
激光点云数据格式Las/Laz目前网上流行的读取库为c++版本的LibLas,java版本的读取解析工具目前还没有找到,但是还好有大神已经为java程序员打了LibLas的JNI版本(https:// ...
- java 解析umd文件_UMD文件结构解析
UMD文件结构解析 (2009-02-23 16:39:48) 标签: umd总结 周末二天没有上BLOG,哈哈,玩的相当爽.今天还是把UMD文件整个写完吧. 让我们直接进入主题. 上一文我们提到了基 ...
- python解析xml文件elementtree_Python XML解析之ElementTree
参考网址: 菜鸟教程提供了基本的XML编程接口DOM.SAX,以及轻量级ElementTree的简易概念说明和一些示例.DOM是一种跨语言的XML解析机制,通过将整个XML在内存中解析为一个树来操作, ...
- java解析yml文件_java读取解析application.yml
java读取解析application.yml 不用依赖spring容器,可单独使用. bug已修改... 第一步.首先要2个jar com.fasterxml.jackson.dataformat ...
最新文章
- java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)...
- SAP Cloud for Customer里的ticket回复UI的实现
- 全局变量和环境变量的区别
- 优化MySQL,还是使用缓存?
- Java事件侦听器函数_SWT 计算器 按钮事件监听 获取按钮text值
- Linux 7 关闭、禁用防火墙服务
- python非法变量名_数据库错误:ORA-01036:非法变量名/numb
- 【poj1284-Primitive Roots】欧拉函数-奇素数的原根个数
- 字符串是通过“引用”传递的
- 科技部领衔发布中国新一代AI发展报告:中美成全球AI网络核心节点
- 计算机中我的云文档在哪儿里,wps云文档可以删除吗在哪里删除
- 如何在新的Apple TV遥控器上调整触摸灵敏度
- sqlserver 18456登录错误处理
- 手写VIO学习总结(二)
- Ubuntu系统在终端查看一些软硬件版本或文件大小的指令!
- 色调,饱和度,亮度如何计算
- 深圳创业公司宇初网络推出国内首家验证码广告平台,用广告代替验证码
- 如何在拨号vps里查看本机ip地址
- 小结(由递推公式得到递推矩阵)
- 除号java_【除号66】loadrunner-java虚拟用户小结 (准备篇)
热门文章
- vb检测html事件,VB代码VB小程序:捕获 WebBrowser 控件的鼠标事件
- 机器人蛮王_盖伦:吊打我老婆,蛮王:我也是,他:被老婆打的不敢出塔
- uC/GUI 在Cortex-M3 内核上的移植
- How to Use Hive-based Registry IN WINCE.NET
- java判断ftp创建目录是否成功_Java判断Ftp服务器目录是否存在,若不存在创建目录 ....
- python浮点型数据怎么显示为图片_python数字图像处理(4):图像数据类型及颜色空间转换...
- Arcgis自下而上从左到右进行编号
- 【转】linx 设备名字来由 sd sr sg st
- 【转】Linux的.a、.so和.o文件
- 【转】09.认识一下Qt用到的开发工具