第一章 什么是XML?
1.xml简介
XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。
XML与HTML的设计区别是:XML是用来存储数据的,重在数据本身。而HTML是用来定义数据的,重在数据的显示模式。
简而言之,XML是一个用来存储数据的好东东,具体到我们设备而言,XML可以提供一套标准的、可扩展的存储配置信息的手段。其存储数据的格式是一种树形结构,且必须严格遵守相关的规定。
2.xml语法
在XML中,采用了如下的语法:
(1) 任何的起始标签都必须有一个结束标签。;
(2) 可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。这种语法是在大于符号之前紧跟一个斜线(/),例如<tag />。XML解析器会将其翻译成<tag></tag>。;
(3) 标签必须按合适的顺序进行嵌套,所以结束标签必须按镜像顺序匹配起始标签,例如this is a samplestring。这好比是将起始和结束标签看作是数学中的左右括号:在没有关闭所有的内部括号之前,是不能关闭外面的括号的;
(4) 所有的属性都必须有值;
(5) 所有的属性都必须在值的周围加上双引号。
下面是两种常见的XML格式:
(1)有文本内容:
形如下面<username>root</username>,由于有文本内容,必须将开闭分开写,文本放在中间;
<?xml version="1.0"?>
<root> //根结点
<mysql> //子结点
<host>127.0.0.1_new_new_new_new</host> //叶子结点
<port>3306</port>
<db>test</db>
<password>123456</password>
<username>root</username>
</mysql>
</root>
(2)没有文本内容:
形如下面<username user=”admin” />,由于没有文本内容,可以写为一行即可,user=”admin”为属性(PS:建议尽量不要使用属性,而是使用文本内容,具体的原因可参见http://www.w3school.com.cn/xml/xml_attributes.asp中“XML 元素 vs. 属性”小节);
<?xml version="1.0"?>
<root>
<mysql>
<host>127.0.0.1_new_new_new_new</host>
<port>3306</port>
<db>test</db>
<password>123456</password>
<username user=”admin” />
</mysql>
</root>
关于XML更加详细的介绍请看这里:http://www.w3school.com.cn/xml/index.asp
第二章 什么是libxml2?
1.libxml2简介
Libxml2是一个开源的、C语言的XML程序库,提供了对XML文档的各种操作方法,并且支持XPATH查询,以及部分的支持XSLT转换等功能。
简而言之,libxml2提供一套公共的、便利的操作xml的公共方法(函数)。
2.libxml2的下载和编译
(1)libxml2的官方下载地址是ftp://xmlsoft.org/libxml2/,下载最新版libxml2-2.7.8.tar.gz;
(2)解压到任意文件夹,并执行下述配置命令:
./configure --host=mips-linux-uclibc CC=mips-linux-uclibc-gcc \
--with-minimum \
--with-xpath \
--with-tree \
--with-writer
说明:
--host 表示目标系统是mips-linux-uclibc
--CC 表示指定的编译器是mips-linux-uclibc-gcc(需自行将
mips-linux-uclibc-gcc所在的路径加入PATH环境变量中)
--with-minimum 表示编译最小系统(嵌入式设备,flash空间有限)
--with-xpath 表示编译对xpath的支持
--with-tree 表示对XML树的最基本支持
--with-writer 表示对XML结点的最基本支持
然后执行
make && make install
这样就编译出可以运行在目标平台上的库文