如何使用libXML在xml文件中获取编码?

时间:2014-03-05 22:16:22

标签: ios xml xml-parsing libxml2

我使用libxml来解析xml响应。我发现libxml通过读取xml文件头来检测编码。但是我找不到如何获得检测到的编码。我做了以下操作来获取libxml以检测编码:

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

我遇到了

xmlDetectCharEncoding(const unsigned char * in, int len)

返回检测到的编码,但不是来自xml文件的第一行。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

解析文档后,您可以在xmlDoc structencoding位置找到编码。

编辑:如果您使用推送解析器和自己的SAX处理程序,则不会构建xmlDoc。在这种情况下,您可以从xmlParserCtxtPtr通过ctxt->encoding(或者ctxt->input->encoding)获取编码,但只能在解析XML声明之后。这意味着您必须至少调用xmlParseChunk一次,并确保已将足够的数据提供给推送解析器。