libxml xmlNodeDump编码问题

时间:2013-02-06 15:54:07

标签: libxml2 kissxml

我有这段代码

    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"

结果我需要чатрум而不是

чатрум

我该怎么做?

1 个答案:

答案 0 :(得分:1)

尝试使用xmlNodeDumpOutput来指定编码。请注意,它使用的是xmlOutputBuffer而不是xmlBuffer。另一个有用的函数是xmlXPathCastNodeToString,它将节点的XPath字符串值返回为xmlChar