免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2668 | 回复: 7

关于libxml2的问题 [复制链接]

论坛徽章:
0
发表于 2009-04-28 09:25 |显示全部楼层
昨天经高手指教用了libxml2,来生成xml文件,里面有个函数 xmlSaveFormatFileEnc,是可以把xml存成文件的,我想问,有没有把生成的xml文件直接赋值给一个变量呢?

[ 本帖最后由 xiehc 于 2009-4-28 10:07 编辑 ]

论坛徽章:
0
发表于 2009-04-28 10:08 |显示全部楼层

回复 #1 xiehc 的帖子

不是很懂你的意思,如果是想获取指向user的指针。
xmlNodePtr cur = xmlDocGetRootElement(doc);
cur = cur -> xmlChildrenNode;

然后在判断是不是
xmlStrcmp(cur -> name,(const xmlChar *)"user"));
如果不是
cur = cur ->next;

论坛徽章:
0
发表于 2009-04-28 10:27 |显示全部楼层

回复 #1 xiehc 的帖子

修改源码!!!!!!!!!
小弟刚刚改完一个,小弟用的是tinyxml,6个源文件,4个cpp,2个h.
也碰到楼主大大的问题,内存数据就是xml,需要分析内存数据,而没有文件。
另外,生成的也不是xml文件,而只是放在内存里,都要增加些自己的函数。
昨天小弟花了一下午搞完了。
估计楼主大大的问题和小弟遇到的一样。
^_^

论坛徽章:
0
发表于 2009-04-28 12:12 |显示全部楼层
我遇到的可能和楼上的兄弟差不多,我直接把doc打印的话printf("%s",doc);结果是打的内存数据   是乱码。
二楼的兄弟 我的意思是建立一个doc后,把建立的xml数据赋值给一个变量,呵呵  据楼上的说没戏  还要改源代码

论坛徽章:
0
发表于 2009-04-28 12:14 |显示全部楼层
但是具体的要怎么改呢?

论坛徽章:
0
发表于 2009-04-28 14:13 |显示全部楼层

回复 #5 xiehc 的帖子

我用的应该和你用的不是一个东西吧。我用的是tinyxml,开源的。
原来他的做法:
1:读入xml文件,那段好改,直接改读入的那个函数就行了。好像是,我昨天做的。
2:把数据生成一个xml文件,我要用的是生成的数据在内存里,而不是文件。这部分改起来比较麻烦,安他原有的print函数增加一个相似的,把原来print到文件的,全部print到内存。也就是每个有print的类,都相应增加一个对应的写入内存的函数。不过,人家用fprintf往文件里写,文件指针的会自动往后移。现在我改成sprint,也就是j += sprintf(mem+j,...)这么改一下。
其它的也没什么了,就是繁琐一点,细心点,一下午可以搞完。
小弟就是花一下午搞完的。

论坛徽章:
0
发表于 2009-04-28 21:22 |显示全部楼层
关注一下,最近要搞xml了

论坛徽章:
0
发表于 2010-01-16 16:39 |显示全部楼层
int size;
char *inxml;

xmlDocDumpMemory( doc, (xmlChar **)&inxml,& size);

或者

xmlDocDumpFormatMemory(doc,(xmlChar **)&inxml, &size,0);
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP