我正在使用 libxml2 的 sax 解析器来读取大型 xml 文件。大多数回调处理程序都提供了一个以 NULL 结尾的字符指针。使用String.fromCString
这些可以在 Swift 中转换为常规字符串。但是 sax 使用缓冲区来读取字节,因此characters
可以使用字符串的一部分(即缓冲区的大小)调用回调 ( ) 之一。这个部分字符串甚至可能在 Unicode 代码点的中间开始/结束。回调将被多次调用,直到提供完整的字符串(以块的形式)。
我正在考虑连接所有块直到可以组装完整的字符串,或者以某种方式检测部分字符串中的代码点边界,仅处理完成直到无效代码点。
处理这种情况的最佳方法是什么?处理应该尽可能快,同时仍然正确。内存使用量应保持在最低限度,但不能以性能为代价。