2014-03-05 40 views
0

我正在使用libxml來解析xml響應。我發現libxml通過讀取xml文件頭來檢測編碼。但我找不到如何獲取檢測encoding.I做了以下獲得的libxml檢測編碼:如何使用libXML獲取xml文件中的編碼?

xmlCreatePushParserCtxt(&simpleSAXHandlerStruct, (__bridge void *)(self), [data bytes], [data length], NULL); 

我碰到

xmlDetectCharEncoding(const unsigned char * in, int len) 

返回檢測到的編碼,但不是來自第一行xml文件。

有什麼想法?

回答

1

解析文檔後,您可以在xmlDoc structencoding插槽中找到編碼。

編輯:如果您使用推送解析器與您自己的SAX處理程序,將不會建立xmlDoc。在這種情況下,您可以通過ctxt->encoding(或ctxt->input->encoding)得到xmlParserCtxtPtr的編碼,但只能在解析XML聲明之後。這意味着您必須至少調用一次xmlParseChunk一次,並確保已將足夠的數據輸入到解析器。

+0

感謝您的迴應!你指出我正確的方向。我嘗試了xmlParserCtxtPtr結構的myDoc屬性。但它給了我空。還有xmlParserCtxtPtr結構的「編碼」屬性。這與你所指的一樣嗎? – iosDeveloper

+0

@Jignesh看到我編輯的答案。 – nwellnhof

+0

謝謝nwellnhof!我這樣做,我相信第一塊肯定會得到XML頭異步加載數據... – iosDeveloper

相關問題