我有这个代码
if(genericPtr->type == XML_ATTRIBUTE_NODE){
xmlAttrPtr attr = (xmlAttrPtr)genericPtr;
printf("\n str %s\n", (const char *)attr->children->content);
}
xmlBufferPtr bufferPtr = xmlBufferCreate();
if (IsXmlNsPtr(genericPtr)){
xmlNodeDump(bufferPtr, NULL, (xmlNodePtr)genericPtr, 0, format);
}else{
xmlNodeDump(bufferPtr, ((xmlStdPtr)genericPtr)->doc, (xmlNodePtr)genericPtr, 0, format);
}
printf("\n str2 %s\n", (const char *)bufferPtr->content);
结果是
str чатрум@muc.chat.quickblox.com/300
str2 to="чатрум@muc.chat.quickblox.com/300"
结果我需要чатрум代替
чатрум
我该怎么做?
最佳答案
尝试xmlNodeDumpOutput
它允许您指定编码。请注意,它使用 xmlOutputBuffer
而不是 xmlBuffer
。另一个有用的函数是 xmlXPathCastNodeToString
它以 xmlChar
形式返回节点的 XPath 字符串值。
关于libxml2 - libxml xmlNodeDump 编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14733174/