我有这段代码
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"
结果我需要чатрум而不是
чатрум
我该怎么做?
答案 0 :(得分:1)
尝试使用xmlNodeDumpOutput
来指定编码。请注意,它使用的是xmlOutputBuffer
而不是xmlBuffer
。另一个有用的函数是xmlXPathCastNodeToString
,它将节点的XPath字符串值返回为xmlChar
。