Output an array as XML

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