2013-02-06 58 views
1

我有這樣的代碼的libxml xmlNodeDump編碼問題

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

嘗試xmlNodeDumpOutput它允許你指定一個編碼。請注意,它使用xmlOutputBuffer而不是xmlBuffer。另一個有用的函數是xmlXPathCastNodeToString,它返回節點的XPath字符串值爲xmlChar

+0

嗨,我正好使用這種方法,xmlNodeDumpOutput,但即使聲明所需的輸出編碼,我總是一個UTF-8輸出。 你能指點我正確的方向嗎? –

+0

@ Mr.Gate你想使用什麼編碼?你確定它的libxml2安裝支持嗎? – nwellnhof