Hi,
Im currently trying to build a sitemap.xml file with ruby code.
at the moment i have an array containing urls so @urls =
[“http://www.google.com”, “http://yahoo.com”] etc…
What i want to do is to loop through these and output them into the
following xml structure:
<?xml version="1.0" encoding="UTF-8"?>
http://www.google.com
Im currently trying to do it with builder and have the following:
@sitemap = Builder::XmlMarkup.new()
@sitemap.instruct!
@sitemap.declare! :DOCTYPE, :html, :PUBLIC, “-//W3C//DTD XHTML 1.0
Strict//EN”, “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”
@sitemap.urlset(“xmlns” =>
“www.sitemaps.org - /schemas/sitemap/0.9/”)
im at the point where i need to take the @urls and insert them in
between the urlset element.
any ideas on how i might do this?
Cheers
Hi Chris,
Im currently trying to do it with builder and have the following:
urls = [“http://www.google.com”, “http://yahoo.com”]
@sitemap = Builder::XmlMarkup.new()
@sitemap.instruct!
@sitemap.declare! :DOCTYPE, :html, :PUBLIC, “-//W3C//DTD XHTML 1.0
Strict//EN”, “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”
@sitemap.urlset can take a block as a parameter:
@sitemap.urlset(“xmlns” =>
“www.sitemaps.org - /schemas/sitemap/0.9/”)
it becomes:
@sitemap.urlset(“xmlns” => “www.sitemaps.org - /schemas/sitemap/
0.9”) do |urlset|
urls.each do |loc|
urlset.url { |url| url.loc(loc) }
end
end
The block argument ‘urlset’ is effectively the urlset tag and behaves
the same way as @sitemap. The block that is passed to @sitemap.urlset
can iterate the array of URLs and build the child nodes (also using
blocks to build their children and so on).
-Dustin