xml2js 未解析 xml 通过代理检索
xml2js not parsing xml retrieved through proxy
我正在开发一个 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")
});
在检索远程文件的代码中,我在 'data' 事件中看到了正确的响应。所以我知道连接正在工作,但之后它就挂起,它永远不会到达解析器 'end' 事件。没有抛出任何错误。
如果能指出我做错的地方,我将不胜感激。
TIA!
尝试在响应发出后调用 parseString 'end'。
例如
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);
});
});
我正在开发一个 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")
});
在检索远程文件的代码中,我在 'data' 事件中看到了正确的响应。所以我知道连接正在工作,但之后它就挂起,它永远不会到达解析器 'end' 事件。没有抛出任何错误。
如果能指出我做错的地方,我将不胜感激。
TIA!
尝试在响应发出后调用 parseString 'end'。
例如
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);
});
});