【问题标题】:xml2js not parsing xml retrieved through proxyxml2js 不解析通过代理检索的 xml
【发布时间】:2015-04-18 08:41:45
【问题描述】:

我正在开发一个 nodejs 应用程序并使用 xml2js 来解析 xml 文件。 当xml文件在本地时,我用xml2js解析没有问题,但是我需要检索远程xml文件,我需要通过代理连接。

此代码(读取本地 xml 文件)有效:

var rundownParser = new xml2js.Parser();
function parseRundown(){
    fs.readFile(rundownFolder + '/' + rundownFile, function(err, data) {
        rundownParser.parseString(data);
    });
}
rundownParser.on('end', function(result) {
    console.log("PARSER ENDED")
});

这是我通过代理检索远程 XML 文件的代码:

    var rundownParser = new xml2js.Parser();    
    function parseRundown(){
        var options = {
          host: proxyHost,
          port: proxyPort,
          path: mosGatewayPath,
          method: 'GET',
          headers : {
              host: mosGatewayHost
          }
        };

        var req = http.request(options, function(res) {
            res.on('data', function (response) {
                console.log("REMOTE DATA: "+response)
                rundownParser.parseString(response); 
            });
        });
        req.end();
    }
    rundownParser.on('end', function(result) {
        console.log("PARSER ENDED")
});

在检索远程文件的代码中,我在“数据”事件中看到了正确的响应。所以我知道连接正在工作,但在那之后它只是挂起,它永远不会到达解析器的“结束”事件。不会抛出任何错误。

如果能帮助我指出我做错了什么,我将不胜感激。

TIA!

【问题讨论】:

    标签: xml node.js proxy


    【解决方案1】:

    在响应发出 'end' 后尝试调用 parseString。

    例如

    var req = http.request(options, function(res) {
        var body;
    
        res.on('data', function (data) {
            body += data
        });
    
        res.on('end', function() {
          console.log("REMOTE DATA: "+body)
          rundownParser.parseString(body); 
        });
    });
    

    【讨论】:

      猜你喜欢
      • 2014-08-24
      • 1970-01-01
      • 2019-03-15
      • 2014-08-30
      • 2012-06-09
      • 2019-10-24
      • 1970-01-01
      • 2018-10-31
      • 2023-03-17
      相关资源
      最近更新 更多