我正在使用 libxml 来解析 xml 响应。我发现libxml通过读取xml文件头来检测编码。但我找不到如何获取检测到的编码。我执行了以下操作来获取 libxml 来检测编码:
xmlCreatePushParserCtxt(&simpleSAXHandlerStruct, (__bridge void *)(self), [data bytes], [data length], NULL);
我遇到了
xmlDetectCharEncoding(const unsigned char * in, int len)
它返回检测到的编码,但不是来自 xml 文件的第一行。
有什么想法吗?
最佳答案
解析文档后,可以在xmlDoc
struct的encoding
槽中找到编码.
编辑:如果您将推送解析器与您自己的 SAX 处理程序一起使用,则不会构建 xmlDoc
。在这种情况下,您可以通过 ctxt->encoding
(或者可能是 ctxt->input->encoding
)从 xmlParserCtxtPtr
获取编码,但是只有在解析了 XML 声明之后。这意味着您必须至少调用一次 xmlParseChunk
并确保已将足够的数据提供给推送解析器。
关于ios - 如何使用 libXML 在 xml 文件中获取编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22210559/