我正在尝试通过 node
的请求模块获取我的 RSS 数据提要(xml 文件),如下所示:
var fs = require('fs')
, request = require('request')
, feed = 'http://www.benchmark.pl/rss/aktualnosci-pliki.xml';
request.get(feed, function(error, response, body) {
if (!error && response.statusCode == 200) {
var csv = body;
fs.createReadStream(body)
.on('error', function (error) {
console.error(error);
});
}
});
但是我得到了错误:
{ [Error: ENAMETOOLONG, open '<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>
....
</rss>
遇到这种情况我该怎么办?
最佳答案
您正在尝试使用 HTTP 请求的主体(即 XML 文件的内容)作为文件名,从磁盘上的文件创建一个 ReadableStream。
你的意思是:
request.get(feed, function(error, response) {
if (!error && response.statusCode == 200) {
response.pipe(someXmlParserStream);
}
});
它利用了 response
对象已经是一个可读流的事实,您可以通过管道将其传输到另一个流。
如果您不想使用流,而是缓冲整个主体,那么 request
可以为您做到这一点:
request.get(feed, function(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
});
关于xml - ENAMETOOLONG 请求 xml 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20271583/