Namespace attributes in Builder gem

builder, namespaces, xml

Solution

Figured it out:

xml.tag!('gp:contactGet', {"xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance", "xmlns:ngp"=>"http://www.ngpsoftware.com/ngpapi"}) do 
  xml.campaignID("1033")
  xml.contactID("199434")
end

Produces...

<?xml version="1.0" encoding="UTF-8"?>
<gp:contactGet xmlns:ngp="http://www.ngpsoftware.com/ngpapi" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <campaignID>1033</campaignID>
  <contactID>199434</contactID>
</gp:contactGet><to_s/>

Problem

Im trying to build out this sample in a Ruby on Rails app with the builder gem: ``` <?xml version="1.0" encoding="utf-8"?> <ngp:contactGet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ngp="http://www.ngpsoftware.com/ngpapi"> <campaignID>1033</campaignID> <contactID>199434</contactID> </ngp:contactGet> ``` I can generate a tag with a namespace as follows: ``` xml = Builder::XmlMarkup.new xml.ngp :contactGet ``` ...but I can't get an attribute inside that tag. I would think that ``` xml.ngp :contactGet("xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance" "xmlns:ngp" =>"http://www.ngpsoftware.com/ngpapi" ``` would work but it doesn't. Please Help!

Original source