免费注册 查看新帖 |

Chinaunix

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

关于libxml生成节点的问题 [复制链接]

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-07-18 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-16 20:46 |只看该作者 |倒序浏览
我有一个字符串/Document/MsgId/IdSet/Id1,
我想创建Id1,但不知道前面节点是否都生成,我要做到没有父节点就创建。
不知大家是否遇到过这样的问题,请高手指教一二,在此谢过。

[ 本帖最后由 lyl2002 于 2009-7-16 21:03 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-07-16 22:20 |只看该作者
我的办法是一层一层往下找,找到就指到子节点,否则创建,不知道你愿不愿意用

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-07-18 06:20:00
3 [报告]
发表于 2009-07-17 08:45 |只看该作者
自己写了一个,大致就这么个意思,大家可以参考一下
,一些底层函数自己写的,请赐教
int setnode(char *rhFldPath,char *rhFldName,char *acValue)
{
        char * nodeSet[50];/*最大50层*/
    char   tempPath[512];
    char   nodePath[512];
    char   xpath[512];
    xmlNodePtr cur,curNode;
    int    len=0,i;   

        memset(nodePath,0,sizeof(nodePath));
       
        sprintf(nodePath,"%s/%s",rhFldPath,rhFldName);
    len = split('/', nodePath, nodeSet, 50);
    cur = root;
    strcpy(xpath,"/Document");
    for( i=0; i<len; i++ )
    {              
        memset(xpath,0,sizeof(xpath));
        memset(tempPath,0,sizeof(tempPath));
        strcpy(tempPath,nodeSet);
        sprintf(xpath,"%s/%s",xpath,tempPath);
                if ( NULL == (curNode = XMLGetNode(doc, xpath)) )
                {
                        curNode= xmlNewChild(cur, NULL, tempPath, NULL);
                        if(NULL == curNode)
                        {
                                printf(-1, " 生成节点错!xpath=[%s]",xpath);
                        }
                        if ( i == len -1 )
                        {
                                XMLSetNodeText(curNode,acValue)        ;
                        }
                        cur = curNode;
                }
                else
                {
                        if ( i == len -1 )
                        {
                                XMLSetNodeText(curNode,acValue)        ;
                        }
                }       
        }
        return 0;
}

[ 本帖最后由 lyl2002 于 2009-7-17 08:47 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP