网络数据交换中的XML定时数据压缩

2017-06-27 08:08王芳雷菊阳
单片机与嵌入式系统应用 2017年6期
关键词:描述性王芳程序

王芳,雷菊阳

(上海工程技术大学 机械学院,上海 201620)

网络数据交换中的XML定时数据压缩

王芳,雷菊阳

(上海工程技术大学 机械学院,上海 201620)

XML即可扩展标记语言,是为了在网络中说明和交换数据而制定的标准数据格式,而作为数据载体的XML文档的体积也随着交换数据增多而变得越来越大, 这给网络上的数据传输造成了很大的负担。为此,先把数据库里的数据生成XML,再加工成压缩包,就是每一条数据都是xml.zip的压缩包,利用C#编写定时程序进行定时压缩,不用手动,最后用于数据推送。

XML;数据压缩;C#

引 言

随着互联网的飞速发展,网络间的信息交换变得越来越频繁, XML[1]为互联网的数据交换而设计,它不仅仅是SGML[2]定义的用于描述的文档,而且使电子商务等很多领域数据交换[2]成为可能。XML的文本表现手法、标记的符号化会导致XML数据比二进制表数据量增加,尤其当数据量很大的时候,效率就成为很大的问题。对文件进行压缩[3],这样可以使传输的数据变得更小,有利于基于数据的传输,而且要使XML压缩技术作为底层压缩工具来应用,就必须减少人工干预,进行定时数据压缩。

1 XML概述

可扩展标记语言 XML(Extensible Markup Language),是一种类似于超文本标记语言[4]的结构化标记语言,用来进行数据的存储和传输,是目前最常用的数据表现和传输方式之一。不同于超文本标记语言,XML 的标签是用户自定义的,具有自我描述性[5],能够清晰地向用户或者应用程序展现其所包含的数据。

数据的优点[6]在于:能应用于互联网数据交换,由于存在各种格式的数据,且其具有数据自描述性和丰富的数据表达能力,使得各种数据之间可以无缝交换;它能实现异构异质系统间[7]的通信,传统的结构化数据库难以适应多系统异构数据的融合,而数据由于具有自我描述性,能很好地适应这种数据集成的需要,为电子商务的发展提供了优越的条件。

2 程序设计

C#[8]是一种安全的、稳定的、简单的、由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些复杂特性。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、创新的语言特性和便捷性成为面向组件编程的首选语言。

2.1 数据库连接程序

首先连接数据库,即 从VS2008中连接SQL2008数据库[9],程序如下:

private DBOperator DB=DBOperatorFactory.GetDBOperator(ConfigurationManager.Connectionstrings["CONNTEMP"].ConnectionString,ConfigurationManager.AppSettings["SQLSERVER"]);

System.Timers.Timer mytime=new System.Timers.Timer(ConfigurationManager.AppSettings["commandTimeout"]).ToInt32());

//Timer 10 s执行一次

2.2 生成XML程序

XML的自描述性使其非常适用于不同应用间的数据交换,而且这种交换是不以预先规定一组数据结构定义为前提。在数据交换中使用,程序开发人员可以方便地用自定义的标记来描述数据。XML 作为一种中间件和数据承载工具, 在数据交换领域显示了它强大的功能和方便的使用性。因此要将数据转换为XML,程序如下:private string GetXml(string ID,string datatype,string datacode){

SqlParameterCollection spc=DB.CreateSqlParameterCollection();

Spc.Add("@ID",ID);

Spc.Add("@datatype",datatype);

Spc.Add("@datacode",datacode);

String sql=@"";

DataTable dt=DB.ExeSqlForDataTable(sql,spc,"dt");

String XmlString="select * from temp where ID=@ID and datatype=@datatype and datatype=@datatype";

foreach (DataRow dr in dt.Rows){

XmlString +=@"";

XmlString +=@"";

for (int i=0,i

XmlString+="<"+dt.Columns[i].ColumnName+">"+dr[dt.Columns[i].ColumnName]+"";

If (dt.Columns[i].ColumnName=="VERSION")

}

XmlString+="";

XmlString+="";

}

if (dt.Columns[i].ColumnName=="DATA_TIMESTAMP")

}

2.3 定时程序

通过定时程序可以实现较少的人工干预,提供友好的用户接口,要使XML压缩技术作为底层压缩工具来应用,就必须减少人工干预,因此编写定时程序进行定时压缩[10],程序如下:

Protected override void OnStart(string[] args){

//TODO:在此处添加代码以启动服务

mytime.Elapsed+=new ElapsedEventHandler(mytime_Elapsed);

mytime.Enabled=true;

mytime.AutoReset=true;

}

void mytime_Elapsed(object source,ElapsedEventArgs e){

String time=DataTime.Nov.ToString("HHmmss");

if (time.Equals(ConfigurationManager.AppSettings["Time"])){

WriteLog("开始");

mytime.Stop().

//先关掉计时器,防止还没有处理完成再开启一个 //线程出来

String DateforTran==DataTime.Nov.ToString("yyyy-mm-dd");//传送数据的时间节点

TransDataLxxm(DateforTran);//数据信息

Mytime.Start();//执行完再打开,防止再开启一个 //线程出来

}

我国水利规划近年总体进展及重点把握的几个问题…………………………………… 吴 强,周智伟,郭东阳(9.27)

}

2.4 压缩程序

由于数据压缩是节省系统存储空间和提高传输效率的有效途径,通过对文件进行压缩,可以使传输的数据变得更小,减少程序的执行代价和执行时间,有利于基于数据的传输,压缩程序如下:

private void XmlTozip(string strXML,string datacode{

string strFolder="D:\TempFiles\";

if(!System.IO.Directory.Exists(strFolder){

System.IO.Directory.CreateDirectory(strFolder);

DirectoryInfo folder=new DirectoryInfo(strFolder);

String strData=DataTime.Nov.ToString("yyyymmdd");

Int tempLsh=0;

Foreach(FileInfo file in folder.GetFiles(strData+"*"+datacode+".zip")){

if(tempLsh

}

tempLsh++;

string strFileName=strFolder+strData+"-"+tempLsh.ToString("000000")+".xml";

string filenameZip=strData+"-"+tempLsh.ToString("000000")+".xml";

string FolderfilenameZip=strFolder+strData+"-"+tempLsh.ToString("000000")+".zip";

FileStream fs=new System.IO.FileStream(strFileName,System.IO.FileMode.OpenOrCreate,System.IO.FileAccess ReadWrite);

StreamWrite sv=new System.IO.StreamWrite(fs);

Sv.WriteLine(strXML);

Sv.Flush();

Sv.Close();

Fs.Close();

FastZip fz=new FastZip();

Fz.CreateZip(FolderfilenameZip,strFolder,true,filenameZip);

2.5 运行结果

自行模拟运行结果程序如图1所示,数据压缩实现。

图1 运行结果

结 语

[1] 郑黎晓,王成.XML模式推断研究综述[J].电子学报,2016,44(2):2-3.

[2] 张屹峰.DOM4j解析技术探究[J].现代计算机,2011(2):2-3.

[3] 曾春平,王超.编程从入门到精通[M].北京:北京希望电子出版社,2002:19-28.

[4] M Girardot,N.Sundaresan.Millau:an encoding format for efficient representation and exchange of XML documents [J].Computer Networks,2000,33(1-6):430-469.

[5] 钟世明,邵锐.基于位置服务系统中XML数据流压缩方法[J].武汉理工大学学报,2006:20-34.

[6] 徐珊.XML与Web Services数据整合模型及其在教育考试信息系统中的应用[D].南昌:南昌大学,2014:43-50.

[7] 王丹琛.物流信息系统中XML数据压缩与传输安全性研究[D].成都:西南交通大学,2007:32-45.

[8] 王小科.李继业开发宝典[M].北京:机械工业出版社,2012:3-5.

[9] 朱立才,黄津津.C#的数据库编程技术[M].福州:福建教育出版社,2005:21-40.

[10] 周月.基于XML的异构数据交换在校园网中的应用[D].北京:首都师范大学,2008:4-10.

王芳(硕士),主要研究方向为机器学习;雷菊阳(副教授),从事智能控制、模式识别及分布式系统研究及教学。

XML Timing Data Compression of Network Data Exchange

Wang Fang,Lei Juyang

(College of Mechanical Engineering,Shanghai University of Engineering Science,Shanghai 201620,China)

XML(Extensible Markup Language) is the standard data format that is developed to represent and exchange data in the network.The volume of the XML document as a data carrier also becomes larger as the amount of data exchanged increasing,which places a great burden on the data transmission over the network. First of all,the data in the database is generated into XML format,and then is processed into a compressed package,that is to say,each data is xml.zip compressed packet,the C# is used to program for the preparation of compressed time,not by manual,and finally for data transmission.

XML;data compression;C#

TP273

A

�士然

2017-02-07)

猜你喜欢
描述性王芳程序
最佳波段组合的典型地物信息提取
虚构人名的内涵意义分析*——描述性理论面临的挑战和反驳
王芳:带货“一姐”如何炼就?
立秋吃什么
试论我国未决羁押程序的立法完善
The Application of Storytelling in English Writing
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序
浅析独立主格结构在大学英语四六级段落翻译中的运用
创卫暗访程序有待改进