libxml2属性修改C.
我想在我的xml中更改一个属性(’voltage’):
... ...
这是我试图这样做的方式:
void save_detector_attr(xmlNode *node, xmlDoc *doc){ char *voltage; xmlAttrPtr s_vnewattr; char buf[128]; xmlNode *cur = node->xmlChildrenNode; float sv; int cnt = 0; while(cur != NULL) { if (cur->type == XML_ELEMENT_NODE) { if (!xmlStrcmp(cur->name, "detector")){ voltage = xmlGetProp(cur, "voltage"); sv = atof(voltage); snprintf(buf, 128, "%f", sv + 20.1 ); s_vnewattr = xmlNewProp (cur, "voltage", buf); printf(" SAVING to voltage value: %s\n", buf); } } cur = cur->next; } xmlSaveFormatFile ("./mc2x.xml", doc, 1);
不幸的是,在调用该函数之后,我没有重写属性,而是使用了这个新文件:
如何使该属性重写而不是创建一个新属性?
关于J.
只需使用xmlSetProp
:
xmlAttrPtr xmlSetProp (xmlNodePtr node, const xmlChar * name, const xmlChar * value)
设置(或重置)节点承载的属性。 如果@name具有前缀,则将使用相应的命名空间绑定(如果在范围内); 这是一个错误,它在范围内没有这样的ns绑定。