如何设置一个xml文件中节点的值?

Caballeroo 2009-09-24 10:55:10
我在linux下使用libxml2库创建了一个xmldoc,并建立了一些节点格式如下:

<bizRoot>
− <head>
<senderCode> </senderCode>
<gateCode> </gateCode>
<msgNo> </msgNo>
<msgType> </msgType>
<priority> </priority>
</head>
− <body>
− <news>
<opt> </opt>
− <shares>
− <share>
<id> </id>
<title> </title>
<content> </content>
<date> </date>
</share>
</shares>
− <subnewses>
− <subnews>
<id> </id>
<sparkName> </sparkName>
<title> </title>
<content> </content>
<date> </date>
</subnews>
</subnewses>
</news>
</body>
</bizRoot>


如果想给其中某一个节点赋值,比如 <id> </id>中填20,请问该使用什么库函数,或者怎么做?

由于我不熟悉libxml2库,请各位给予帮助!!
...全文
311 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Caballeroo 2009-09-24
  • 打赏
  • 举报
回复
xpathObj = xmlXPathEvalExpression("./code", xpathCtx);

其中xpath表达式为./code 表示所有名称为code的节点 不知道这样写对不对
Caballeroo 2009-09-24
  • 打赏
  • 举报
回复
好像使用xpath可以搞定,但是我不是很了解xpath写了一个函数,好像实现不了,代码如下:

望给予指点:

xmlXPathContextPtr xpathCtx;
xmlXPathObjectPtr xpathObj;


xpathCtx = xmlXPathNewContext(doc);
if(xpathCtx == NULL) {
return(-1);
}
xpathObj = xmlXPathEvalExpression("./code", xpathCtx);
if(xpathObj == NULL) {
xmlXPathFreeContext(xpathCtx);
return(-1);
}
xmlNodeSetPtr nodes=xpathObj->nodesetval;
size = (nodes)?nodes->nodeNr:0;
for(i = size - 1; i >= 0; i--) {

xmlNodeSetContent(nodes->nodeTab[i], "12");

}
Caballeroo 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xiaofanku 的回复:]
你只要看xpath和parser这两个就好!怎么没有发现node?
[/Quote]

文档中有一些设置节点内容的函数比如:xmlNodeSetContent()

但是,我现在的问题是,由于doc文档节点很多,且很多节点嵌套在其他节点中,要设置其中的值的话,并不是仅仅一个xmlNodeSetContent()函数就能搞定的。
zhongjiekangping 2009-09-24
  • 打赏
  • 举报
回复
linux 还真不知道
街头小贩 2009-09-24
  • 打赏
  • 举报
回复
左边有code example呀!
街头小贩 2009-09-24
  • 打赏
  • 举报
回复
你只要看xpath和parser这两个就好!怎么没有发现node?
Caballeroo 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xiaofanku 的回复:]
引用 3 楼 caballeroo 的回复:
c语言,linux下的

C语言懂的不多!你可以去看看libxml2的文档或参考手册之类.给节点赋值只要找到节点用新值覆盖原来的值即可!最后别忘了保存文档

http://xmlsoft.org/html/index.html
[/Quote]、

我看的就是这个文档,库函数太大,所以来请教,有没有什么现成的函数?
街头小贩 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 caballeroo 的回复:]
c语言,linux下的
[/Quote]
C语言懂的不多!你可以去看看libxml2的文档或参考手册之类.给节点赋值只要找到节点用新值覆盖原来的值即可!最后别忘了保存文档

http://xmlsoft.org/html/index.html
Caballeroo 2009-09-24
  • 打赏
  • 举报
回复
c语言,linux下的
街头小贩 2009-09-24
  • 打赏
  • 举报
回复
libxml2是c++操作xml的库么?
Caballeroo 2009-09-24
  • 打赏
  • 举报
回复
没有人知道吗?

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧