是一个小型的开源的XML解析器,采用 C 语言开发。该解析器最大的特点就是小型、无须依赖其他类库
http://www.minixml.org/
tar mxml-2.10.tar.gz -C /home/yue/work0615/demolib/libxml/
cd /home/yue/work0615/demolib/libxml/
vim build_x86.sh
内容如下:
OUTPUT=`pwd`/output/x86/
./configure --prefix=$OUTPUT
make clean
make
make install
chmod +x build_x86.sh
./build_x86.sh
OUTPUT=`pwd`/output/mips463/
./configure --prefix=$PREFIX --enable-shared --host=mips-linux CC=/opt/buildroot-gcc463/usr/bin/mipsel-linux-gcc
make clean
make
make install
chmod +x build_mips.sh
./build_mips.sh
出现如下错误:
./testmxml: 1: ./testmxml: Syntax error: "(" unexpected
make: *** [testmxml] Error 2
Linking mxmldoc-static...
Generating API documentation...
./mxmldoc-static: 1: ./mxmldoc-static: Syntax error: "(" unexpected
由于xml库编译过程需要测试,所以在编译过程会执行 ./testxml 这个输出可执行文件,但编译平台为x86 ,输出的为mips 平台,导致后面的编译和安装无法执行
这个时候需要手动拷贝当前目录 以下几个库文件到我们的开发平台即可
libmxml.so
libmxml.so.1
libmxml.so.1.5
可以用file 查看: file libmxml.so.1.5
libmxml.so.1.5: ELF 32-bit LSB shared object, MIPS, MIPS32 rel2 version 1 (SYSV), dynamically linked, not stripped
mxmlLoadFile()和mxmlLoadString().这些函数的最后一个参数是一个回调函数,决定了在一个XML文档中每个数据节点的值的类型。
mxmlLoadFile(NULL, fp, MXML_OPAQUE_CALLBACK);
Mini-XML为简单XML数据文件定义了几个标准的回调函数:
MXML_INTEGER_CALLBACK-所有的数据节点包含以空格分割的整数。
MXML_OPAQUE_CALLBACK-所有的数据节点包含"不透明"字符串(CDATA)。
MXML_REAL_CALLBACK-所有的数据节点包含以空格分割的浮点数。
MXML_TEXT_CALLBACK-所有的数据节点包含以空格分割的文本字符串。
mxml_node_t *val = mxmlFindElement(node, tree, "标签值",NULL, NULL,MXML_DESCEND);
MXML_DESCEND含义是一直向下直到树的根部
MXML_DESCEND_FIRST含义是向下搜索到一个节点的第一个匹配子节点,但不再继续向下搜索
MXML_NO_DESCEND含义是不查看任何的子节点在XML元素层次中,仅查看同级的伙伴节点或者父节点直到到达顶级节点或者给出的树的顶级节点.
<?xml version="1.0" encoding="gb2312" ?>
<note year="55" date="33" month="22">#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include<mxml.h>
会出现解析出来的password 为: FE-D0 后面的18-00 没办法提取出来
带空格xml内容如下:
<?xml version="1.0" encoding="gb2312" ?>
<note year="55" date="33" month="22">#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include<mxml.h>