Chinaunix
标题:
关于libxml生成节点的问题
[打印本页]
作者:
lyl2002
时间:
2009-07-16 20:46
标题:
关于libxml生成节点的问题
我有一个字符串/Document/MsgId/IdSet/Id1,
我想创建Id1,但不知道前面节点是否都生成,我要做到没有父节点就创建。
不知大家是否遇到过这样的问题,请高手指教一二,在此谢过。
[
本帖最后由 lyl2002 于 2009-7-16 21:03 编辑
]
作者:
blackuhlan
时间:
2009-07-16 22:20
我的办法是一层一层往下找,找到就指到子节点,否则创建,不知道你愿不愿意用
作者:
lyl2002
时间:
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 编辑
]
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2