一、xml文件简介
libxml2 是一个xml的C语言版的解析器,本来是为Gnome项目开发的工具,是一个基于MIT License的免费开源软件。它除了支持C语言外,还支持C++,PHP,Pascal,Ruby,Tcl等,能在windows,linux,solaris,maxosx等平台运行。功能强大。能够满足一般用户的需求。
在一台嵌入式系统中开机上电一般可以选择加载默认配置或者上一次断电之前的配置供选择的选项。还有就是可以实时保存当前系统的状态信息,这一功能就是通过读写xml来实现的。当开机选择为默认设置时,系统就会去读取保存默认信息的xml文件然后去配置系统。读取上一次断电的配置信息也是一样的。保存上次断电的xml文件是系统每隔一段时间实时写入的(具体间隔多少时间看设置了),除此之外还可以保存想要的状态至xml文件中以供系统加载使用。以上是xml在实际项目中使用的一种情况。
二、libxml2的编译与安装
首先在网上下载libxml2,官方下载网址是http://xmlsoft.org/downloads.html,下载完成后执行以下步骤:
1、解压:tar zxvf libxml2-2.7.8.tar.gz
2、进入解压后的安装目录:cd libxml2-2.7.8
3、再执行:./configure –host=arm-xilinx-linux-gnueabi
其中–host=arm-xilinx-linux-gnueabi视使用的交叉编译器而定。在此使用的是xilinx提供的编译器。
4、执行上述步骤后会生成makefile文件。执行make操作后会在当前目录的.lib下有.so的动态库生成(libxml2.so libxml2.so.2 libxml2.so.2.7.8 )。
5、将动态库拷贝到下位机的/usr/lib下。
至此,编写的程序中就可以使用libxml2了。
注意:在编译使用libxml2的程序时,需要注意一下两点
1)、应该在makefile中加入-lxml2对这三个动态库的链接,否则程序是编译不过的。
2)、编译器的链接库中要加入这三个动态库文件,工作项目中的链接库路径是/ti-sdk-am335x/linux-devkit/arm-arago-linux-gnueabi/usr/lib。否则在makefile中虽然指定了链接动态库,但是在路径中没有程序也是编译不过的。
代码中使用到的libxml2中的头文件应该加入到工程中,只需将libxml2-2.7.8\include\libxml中的头文件全部加入到工程文件中即可。
三、libxml2解析
打开system_info.xml文件,其内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<usr_system_info_root>
<device>
<system_information>
<start_up_times>
<chip>2326</chip>
</start_up_times>
</system_information>
</device>
<Device>
<DHCP>OFF</DHCP>
<Ip>10.11.13.215</Ip>
<Subnet>255.255.255.0</Subnet>
<Gateway>192.168.0.1</Gateway>
<Power_On>Default</Power_On>
<Sys_language>English</Sys_language>
<Sys_gpib>18</Sys_gpib>
<Touch_Adjust>
<xMin>4120</xMin>
<xMax>154</xMax>
<yMin>144</yMin>
<yMax>3680</yMax>
</Touch_Adjust>
</Device>