Javascript 使用node.js从url和循环解析xml文件以获取其中的所有url
我正在使用节点模块Javascript 使用node.js从url和循环解析xml文件以获取其中的所有url,javascript,xml,node.js,Javascript,Xml,Node.js,我正在使用节点模块xml2js。我的xml文件的格式如下: <?xml version="1.0" encoding="UTF-8" ?> <?xml-stylesheet type="text/xsl"?> <?xml-stylesheet type="text/css" media="screen" href="some url" ?> <rss xmlns:itunes="http://www.itunes.com/dtds
xml2js
。我的xml
文件的格式如下:
<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl"?>
<?xml-stylesheet type="text/css" media="screen" href="some url" ?>
<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
<channel>
<item>
<pubDate>Fri, 19 Sep 2014 18:00:08 GMT</pubDate>
<guid isPermaLink="false">http://www.example0.com</guid>
</item>
<item>
<pubDate>Fri, 19 Sep 2014 17:52:25 GMT</pubDate>
<guid isPermaLink="false">http://www.example1.com</guid>
</item>
</channel>
</rss>
您可以使用该模块提取所需的URL。
您提到的模块在内部使用saxjs
以下是代码(粗略切割):
输出为:
http://www.example0.com
http://www.example1.com
UPD:
要从internet获取XML并对其进行处理,请使用以下模块:
如果xml文件来源于url而不是本地可用的url,这是否有效?是的,请参阅更新的答案。使用
请求
模块获取可读流
'use strict';
var sax = require('sax');
var fs = require('fs');
var filePath = __dirname + '/' + 'foo.xml';
var isTextPending = false;
var saxStream = sax.createStream(true);
saxStream.on('error', function (e) {
console.error(e);
});
saxStream.ontext = function (text) {
if(isTextPending) {
console.log(text);
isTextPending = false;
}
};
saxStream.on('opentag', function (node) {
if(node.name === 'guid' && node.attributes.isPermaLink === 'false') {
isTextPending = true;
}
});
fs.createReadStream(filePath)
.pipe(saxStream);
http://www.example0.com
http://www.example1.com
var request = require('request');
var href = 'http://SOME_URL.xml';
request(href)
.pipe(saxStream);