我想在xml中更改节点的命名空间。
doc = novi_xml_getdoc(doc_name);
if(doc==NULL){
return -1;
}
sprintf(buff, "//%s:capable-switch",ofprefix[ofconfig_version]);
node = xmlXPathEvalExpression(xpath, context)
if(node == NULL){
return -1;
}
xmlNsPtr ns = xmlNewNs(node,"new-namespace", "prefix");
xmlSetNs(node, ns);
xmlSaveFormatFile (doc_name, doc, 1);
xmlFreeDoc(doc);
但这不会改变节点的命名空间。命名空间保持不变。我看到了几个例子,但都与改变childnode的命名空间有关。
此外,我想如果我们可以通过其他方式修改节点,例如删除并再次创建它,它将起作用。但不知道如何将此节点与其子节点链接。
答案 0 :(得分:1)
node
的{{1}}结果不是您期望的xmlXPathEvalExpression
,而是xmlNodePtr
。
http://www.xmlsoft.org/html/libxml-xpath.html#xmlXPathObject
您需要深入到xmlXPathObjectPtr
以获得表达式的第一个命中。对node->nodesetval->nodeTab[0]
进行NULL测试也很好,检查node->nodesetval
有多少次点击等等。