学习背景:异构系统进行,搭建tcp连接通道,用xml文件进行通信。客户端用java做的web界面,服务器是linux下c写的后台服务。
开发环境:linux是在VMware 下的redhat6.1,我们用eclipse集成在vmware中进行项目管理开发。
由于,以前都是用结构体进行通信,初次接触到xml,以下是个人学习和探索心得:
第一步,了解什么是xml?
XML是一种标记性可扩展的语言,用来存储数据的,其焦点是数据的内容。是一种通用的存储数据的格式。
第二步,在tcp通信中xml是怎么被传输的呢?
tcp通信中,不管传的是什么格式的数据,都是以字节流的形式进行传输的,所以归根到底,要传输xml前
还是的吧xml文件转换成char字符串后在send。这个就设计到xml和char字符串的转换问题,涉及到xml的相关操作。
第三步,怎么操作xml?
在网上看到了,操作xml在不同的系统下面都有相应的解析器和构造器,比如在linux下面有libxml、
libxml2等标准库可以用。
第四步,在linux中怎么用libxml2类似的库呢?
1)从xmlsoft站点或ftp(ftp.xmlsoft.org)站点下载libxml压缩包(libxml2-xxxx.tar.gz)
2)对压缩包进行解压缩
tar xvzf libxml2-xxxx.tar.gz
3)进入解压缩后的文件夹中运行 (到解压路径下面执行下面操作)
#>./configure --prefix /home/user/myxml/xmlinst(此处为待安装的路径运行configure 到安装路劲下,自己把路径建立好)
#>make
#>make install (这儿需要root权限)
(#>export PATH=/home/user/myxml/xmlinst/bin:$PATH(添加路径) )
安装完成后/home/user/myxml/下会多生成4个文件夹:bin include lib share
第五步,安装好libxml2库后,需要在eclipse中设置一些头文件和lib的连接路径。
(1)头文件路径,告诉你工程,include这xml的头文件
(2)lib库设置,告诉连接器,头文件里面的函数在这里链接
Eclipse设置链接路径: /home/user/myxml/lib
设置连接库 xml2
使用命令编译的时候,加上以下参数:
-L /home/user/myxml/ -lxml2
下面编译执行就ok了。
总结:
c语言对xml进行操作,发送接收tcp的xml数据,无非两种:发送,接收。
发送的时候,需要把xml文件,转换成xmlchar进行发送。这里涉及到的函数:
接收的时候,需要把xmlchar的字节流,转换成xml文件,然后对文件进行操作,通过调用libxml2中的函数进行xml的解析。这里涉及到的函数
得到root节点后,要对后面的节点和节点内容进行操作,涉及到主要函数为: