minixml开源包的使用

XML在现在的发展中越显得越重要,目前发现应用在动态页面配置、数据包传输等用处还是相当有作用的。自己编写XML解析器比较耗时,还好现在已经有了做的相当完善的minixml,可以拿过来用了。

google上搜索minixml,目前能够下载到的最新版本是2.7

下载完成以后,解压、安装minixml,操作命令如下

tar -zxf mxml-2.7.tar.gz

解压完成后,进入解压出来的文件夹mxml-2.7根据里面的README进行配置,步骤简单的如下所示,默认安装路径是在/usr/local目录下面

./configure 

make

make install

执行完成以后,可以发现/usr/local/lib目录下面多了mxml的静态和动态的库文件了,如下所示



根据手册,编写测试文档,功能是创建一个xml文档,代码如下

#include <stdio.h>
#include <mxml.h>

int main(int argc, char *argv[])
{
	FILE *fp;
	
	mxml_node_t *xml;    /* <?xml ... ?> */
    mxml_node_t *data;   /* <data> */
    mxml_node_t *node;   /* <node> */
    mxml_node_t *group;  /* <group> */

	fp = fopen("new.xml", "w");
	
    xml = mxmlNewXML("1.0");

    data = mxmlNewElement(xml, "data");

        node = mxmlNewElement(data, "node");
        mxmlNewText(node, 0, "val1");
        node = mxmlNewElement(data, "node");
        mxmlNewText(node, 0, "val2");
        node = mxmlNewElement(data, "node");
        mxmlNewText(node, 0, "val3");

        group = mxmlNewElement(data, "group");

            node = mxmlNewElement(group, "node");
            mxmlNewText(node, 0, "val4 y");
            node = mxmlNewElement(group, "node");
            mxmlNewText(node, 0, "val5 n");
            node = mxmlNewElement(group, "node");
            mxmlNewText(node, 0, "val6 c");

        node = mxmlNewElement(data, "node");
        mxmlNewText(node, 0, "val7");
        node = mxmlNewElement(data, "node");
        mxmlNewText(node, 0, "val8");
	
	mxmlSetWrapMargin(10);
	mxmlSaveFile(xml, fp, MXML_NO_CALLBACK);
    fclose(fp);
}

编译代码,然后执行,发现用Notepad打开生成的XML文旦,全部都在一行记录里面,但是用网页打开则能够正常显示,如下所示


编译过程的错误:


此错误添加上线程库(lpthread)既可以解决


运行过程的错误


错误原因:运行NewXML时候没有找到libmxml.so.1动态库

解决办法:

方法1:将libmxml.so.1拷贝到/lib目录下面即可

方法2:首先、需要清楚的是我们把库文件放在系统默认的动态库目录下面/usr/local/lib目录下面,但是运行时却没有找到?此时需要更新动态库,使用如下命令

sudo ldconfig -v

推荐使用:方法2



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值