免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2776 | 回复: 7
打印 上一主题 下一主题

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-28 09:25 |只看该作者 |倒序浏览
昨天经高手指教用了libxml2,来生成xml文件,里面有个函数 xmlSaveFormatFileEnc,是可以把xml存成文件的,我想问,有没有把生成的xml文件直接赋值给一个变量呢?

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

论坛徽章:
0
2 [报告]
发表于 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
3 [报告]
发表于 2009-04-28 10:27 |只看该作者

回复 #1 xiehc 的帖子

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

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

论坛徽章:
0
5 [报告]
发表于 2009-04-28 12:14 |只看该作者
但是具体的要怎么改呢?

论坛徽章:
0
6 [报告]
发表于 2009-04-28 14:13 |只看该作者

回复 #5 xiehc 的帖子

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

论坛徽章:
0
7 [报告]
发表于 2009-04-28 21:22 |只看该作者
关注一下,最近要搞xml了

论坛徽章:
0
8 [报告]
发表于 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