This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

RSS Reader
#5
Here's an example that will get text from <title> and <description> tags inside of each <item> tag and save them in a table.

Code:
itemtag = false
result = {}

-- callback for tag start
function starttag(parser, tag)
 -- create new storage in result table for each <item> tag
 if tag == 'item' then
   itemtag = true
   table.insert(result, {})
 end

 currtag = tag
end

-- callback for tag end
function endtag(p, tag)
 if tag == 'item' then
   itemtag = false
 end

 currtag = nil
end

-- callback for character data
function cdata(parser, text)
 -- check if parser is inside of <item> and either in <title> or <description>
 if itemtag and currtag then
   if currtag == 'title' then
     result[ #result ].title = text
   elseif currtag == 'description' then
     result[ #result ].description = text
   end
 end
end

-- create parser
lxp = require('lxp')
parser = lxp.new({
 StartElement = starttag,
 EndElement = endtag,
 CharacterData = cdata,
})

-- sample data
data = [[
<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title>RSS Title</title>
<description>This is an example of an RSS feed</description>
<link>http://www.example.com/main.html</link>
<lastBuildDate>Mon, 06 Sep 2010 00:01:00 +0000 </lastBuildDate>
<pubDate>Sun, 06 Sep 2009 16:20:00 +0000</pubDate>
<ttl>1800</ttl>

<item>
 <title>Example entry</title>
 <description>Here is some text containing an interesting description.</description>
 <link>http://www.example.com/blog/post/1</link>
 <guid isPermaLink="true">7bd204c6-1655-4c27-aeee-53f933c5395f</guid>
 <pubDate>Sun, 06 Sep 2009 16:20:00 +0000</pubDate>
</item>

<item>
 <title>Another example entry</title>
 <description>Here is some other text containing an interesting description.</description>
 <link>http://www.example.com/blog/post/1</link>
 <guid isPermaLink="true">7bd204c6-1655-4c27-aeee-53f933c5395f</guid>
 <pubDate>Sun, 06 Sep 2009 16:20:00 +0000</pubDate>
</item>
</channel>
</rss>
]]

if parser:parse(data) then
 log(result)
else
 log('parse failed')
end
Reply


Messages In This Thread
RSS Reader - by Pawel - 28.08.2015, 13:04
RE: RSS Reader - by admin - 31.08.2015, 05:56
RE: RSS Reader - by Pawel - 31.08.2015, 06:32
RE: RSS Reader - by Pawel - 01.09.2015, 11:40
RE: RSS Reader - by admin - 01.09.2015, 12:27
RE: RSS Reader - by Pawel - 01.09.2015, 20:02

Forum Jump: