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

标签 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 文件的第一行。

有什么想法吗?

最佳答案

解析文档后,可以在xmlDoc structencoding槽中找到编码.

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

关于ios - 如何使用 libXML 在 xml 文件中获取编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22210559/

相关文章:

Android XML解析技术选择

android - XmlPullParser getAttributeValue 返回 null

ios - 更改 UIView 的框架并更新其子项的约束

ios - 将 Swift 与 AVPlayer 一起使用,如何通过代码添加和删除视频?

ios - 为什么在 Swift 中以编程方式声明约束时会出现错误?

javascript - 如何在实现 Google 幻灯片时从 javascript 中的 xml 文件在数组中添加文件名

mysql - 无法在 SQL 中使用 OPENXML 查询 XML 文件

java - Jaxb 元素属性选择

java - 安卓,org.w3c.dom : No validating DocumentBuilder implementation available

ios - cloudbees jenkins 构建 ioexception2