minixml 移植开发
一、minixml 介绍1、minixml是一个小型的开源的XML解析器,采用 C 语言开发。该解析器最大的特点就是小型、无须依赖其他类库
2、下载地址:http://www.minixml.org/
二、移植minixml 库1、解压到linux 下tar mxml-2.10.tar.gz -C/home/yue/work0615/demolib/libxml/ cd/home/yue/work0615/demolib/libxml/
2、编写x86平台下编译脚本vim build_x86.sh 内容如下: OUTPUT=`pwd`/output/x86/ 3、编译输出:chmod +xbuild_x86.sh ./build_x86.sh
4、可以在当前目录下输入output/x86/ 平台下运行的库
5、编写mips 平台编译脚本OUTPUT=`pwd`/output/mips463/
6、编译输出chmod +x build_mips.sh ./build_mips.sh
出现如下错误: ./testmxml: 1: ./testmxml: 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 三、相关参数描述1、mxml 提取xml内容回调参数描述mxmlLoadFile()和mxmlLoadString().这些函数的最后一个参数是一个回调函数,决定了在一个XML文档中每个数据节点的值的类型。 mxmlLoadFile(NULL,fp,MXML_OPAQUE_CALLBACK);
2、通过mxmlFindElement 提取节点内容时mxml_node_t *val = mxmlFindElement(node,tree,"标签值",NULL,MXML_DESCEND); MXML_DESCEND含义是一直向下直到树的根部 四、编写开发测试例子1、解析xml数据<?xml version="1.0" encoding="gb2312" ?> <note year="55" date="33" month="22"><id>5000</id> <password0>FE-D0-18-00</password0> <password1>FE-D0-18-01</password1> </note> 2、解析程序如下:#include <stdio.h> #include <stdlib.h> { if(argc<2){ printf("input xml filen"); return -1; } FILE *fp; mxml_node_t *tree,*node; fp = fopen(argv[1],"r"); tree = mxmlLoadFile(NULL,MXML_TEXT_CALLBACK); fclose(fp); mxml_node_t *val,*id; node = mxmlGetFirstChild(tree); val = mxmlFindElement(node,"password1",MXML_DESCEND); if(val){ printf(": %s n",val->child->value.text.string); } node = mxmlFindElement(tree,"note",MXML_DESCEND); printf(" year:%s n",mxmlElementGetAttr(node,"year")); printf(" date:%s n","date")); printf(" month:%s n","month")); id = mxmlFindElement(node,"id",MXML_DESCEND); printf("[%s}n",id->child->value.text.string); mxmlDelete(tree); return 0; } 3、minixml空格无法解析问题
上面的代码,MXML_TEXT_CALLBACK 采用回调时,以空格进行分割
出现如下标签:
<password0>FE-D0 18-00</password0>
会出现解析出来的password 为:FE-D0 后面的18-00 没办法提取出来 带空格xml内容如下:
<?xml version="1.0" encoding="gb2312" ?> <note year="55" date="33" month="22"><id>5000</id> <password0>FE-D0 18-00</password0> <password1>FE-D0 18-01</password1> </note> 4、解析带空格的代码#include <stdio.h> #include <stdlib.h> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ruby-on-rails – ruby??中有哪些可用的消息解决
- win10下安装oracle11G Examples出错[INS-32025][
- Swift WKWebView的swift调用js
- react-native-android – scrollview没有本机类型
- Swift 学习笔记 [2] 类 结构体 枚举
- swift 使用 AFHTTPRequestOperationManager
- 解决UbuntuServer1.14.10安装build-essential等软
- C#验证身份证是否合法的函数
- 使用swift(IOS应用程序)自动滚动UITextView
- objective-c – NSManagedObjectContext perform