【问题标题】:NodeJS Buffer to String errorsNodeJS缓冲区到字符串错误
【发布时间】:2016-10-10 15:43:33
【问题描述】:

我正在使用 https.req 来获取一些 xml 文件。我在回调后取回数据我使用

将该缓冲区转换为字符串
var data = Chunk.toString("utf-8");

然后我用 objtree 或 xml2js 解析这个 xml 文件。 有一段时间一切正常,因为文件非常小,不会出错。但现在我正在解析一个巨大的 xml 文件,我的解析给了我错误。

几个小时以来,我一直认为解析器很糟糕。尝试了很多。然后我决定使用验证器来检查 xml 是否磨损。所以我在浏览器中使用了 xml 文档的链接,从浏览器窗口复制它并检查了我的 xml 文档。一切看起来都很好。但后来我用了

console.log(data);

它给了我相同的文件,但验证器给我带来了很多错误。所以现在我确定我自己缓冲它做错了。并将其转换为字符串。

错误是未闭合的标签,未完成的行是空属性和值。

【问题讨论】:

    标签: xml node.js parsing buffer


    【解决方案1】:

    这里有几个问题:

    首先是(假设Chunk 是我认为的那样)你不应该假设你的所有数据都会在一个'data' 事件中到达,所以你需要缓冲接收到的块并使用缓冲的数据一旦您在响应流中看到'end' 事件。

    其次,如果您要转换为 UTF-8,您可能希望改为调用 response.setEncoding('utf8'),这将确保跨块拆分的任何多字节字符不会转换为无效字符字节序列。一旦你这样做了,这意味着你可以做buffer += chunk

    【讨论】:

    • 是的。刚做了一个测试。数据没有进入一大块:) 没有意识到这一点。你拯救了我的一天!!!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    相关资源
    最近更新 更多