我正在学习parse.com Cloud Code。我想创建后台作业,使http请求RSS feed。在我获得RSS提要后,我需要解析它以获取我想要存储在行中的值。在parse.com论坛上,他们认为要解析RSS feed,我们应该使用xmlreader.js和sax.js来解析这个RSS feed。我还跟着this问题来创建bg作业,并且我已成功保存此Feed中的标签,例如title,link和pubDate,但我的问题是我的RSS Feed在描述标签中有CDATA,其中是多个信息,如地区,价格,地址,房间,我不知道如何解析此CDATA以获取这些值,以便我可以在标题或链接标记等行中对它们进行攻击。
以下是我的RSS Feed的一部分:
<item>
<link>
http://www.ss.lv/msg/lv/real-estate/flats/riga/centre/bilikf.html
</link>
<pubDate>Mon, 19 May 2014 14:12:29 +0300</pubDate>
<description>
<![CDATA[
<a href="http://www.ss.lv/msg/lv/real-estate/flats/riga/centre/bilikf.html"><img align=right border=0 src="http://i.ss.lv/images/2014-04-16/337180/VH4OHU9rSVQ=/1.t.jpg" width="160" height="120" alt=""></a>
Region: <b>centrs</b><br/>Adress: <b>Brīvības 98</b><br/>Rooms.: <b>3</b><br/>m2: <b>80</b><br/>Sērija: <b>Renov.</b><br/>: <b>7.50 €<br><div class=cc2>5.27 Ls</div></b><br/>Price: <b>600 €/mēn.<br><div class=cc2>422 Ls/mēn.</div></b><br/><br/><b><a href="http://www.ss.lv/msg/lv/real-estate/flats/riga/centre/bilikf.html">Apskatīt sludinājumu</a></b><br/><br/>
]]>
</description>
</item>
这是我的后台工作,我解析title,pubDate和链接标记,但我不知道如何解析描述标记以获取其他值。
Parse.Cloud.job("bgJob", function(request, status) {
//
Parse.Cloud.useMasterKey();
//make http request
Parse.Cloud.httpRequest({
url: 'http://www.ss.lv/lv/real-estate/flats/riga/hand_over/rss/'
}).then (function(httpResponse) {
var soapData = httpResponse.text;
xmlreader.read(soapData, function (err, xmldata) {
if(err) {
response.error("Error " +err);
return console.log(err);
}
var info = [];
xmldata.rss.channel.item.each(function (i, item) {
var dzivokli = new Dzivokli();
dzivokli.set("link", item.link.text());
dzivokli.set("title", item.title.text());
dzivokli.set("pubDate", item.pubDate.text());
listArray.push(dzivokli);
});
var promises = [];
Parse.Object.saveAll(info, {
success: function(objs) {
promises.push(objs);
console.log("SAVED ALL!");
},
error: function(error) {
console.log("ERROR WHILE SAVING - "+error);
}
});
return Parse.Promise.when(promises);
});
}).then(function() {
// Set the job's success status
status.success("RSS feeds tika requestots");
}, function(error) {
// Set the job's error status
status.error("something went wrong.");
});
});
任何帮助将不胜感激。感谢
答案 0 :(得分:0)
这真的不是一个parse.com问题,而是更多关于如何用javascript解析CDATA文本的问题。由于您只是获取原始html文本,您可以创建jquery对象并以此方式获取数据。 Parse a HTML String with JS。
您还可以尝试使用正则表达式来获取所需的数据。