Builder gem中的命名空间属性

Luk*_*ler 6 xml namespaces builder

我试图使用构建器gem在Ruby on Rails应用程序中构建此示例:

<?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>
Run Code Online (Sandbox Code Playgroud)

我可以生成带有命名空间的标记,如下所示:

xml = Builder::XmlMarkup.new
xml.ngp :contactGet
Run Code Online (Sandbox Code Playgroud)

...但我无法在该标签内获取属性.

我想是的

xml.ngp :contactGet("xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance" "xmlns:ngp" =>"http://www.ngpsoftware.com/ngpapi"
Run Code Online (Sandbox Code Playgroud)

会工作,但事实并非如此.

请帮忙!

Luk*_*ler 7

弄清楚了:

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
Run Code Online (Sandbox Code Playgroud)

生产...

<?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/>
Run Code Online (Sandbox Code Playgroud)