2012-04-10 58 views
2

我正在編寫一個應用程序來生成XML文件作爲SipP的輸入。經常使用的SIPP 一個標籤是「送」Nokogiri :: XML :: Builder:需要使用字符串「send」作爲元素名稱

的問題是,當我使用引入nokogiri構建XML我

builder = Nokogiri::XML::Builder.new do |xml| 
    xml.send "Some Content" 
end 

我得到這個

<?xml version="1.0"?> 
<Some Content/> 

同樣的情況發生時,我這樣做:

builder = Nokogiri::XML::Builder.new do |xml| 
    xml.send(:'send', "Some Content") 
end 

我不能拼寫'發送'的大寫字母,因爲becau se SipP不會那樣理解。

任何想法如何強制nokogiri創建名稱爲「發送」的元素? 謝謝

回答

5

docs

的建設者的工作,採取的method_missing的優勢。不幸的是 有些方法是在紅寶石中定義的,對於 刪除有困難或危險。例如,您可能想要創建名稱爲「type」,「class」和 「id」的標籤。在這種情況下,您可以使用下劃線 消除方法調用中的標記名稱。

所以檢查以下內容:

irb(main):007:0> Nokogiri::XML::Builder.new { |xml| xml.send_ "foo" }.to_xml 
=> "<?xml version=\"1.0\"?>\n<send>foo</send>\n" 
+0

酷,那做的伎倆。非常感謝! – 2012-04-11 15:24:32

+0

@Christian:請考慮接受這個答案,然後:)你可以通過點擊左邊的勾號按鈕來實現。 – 2012-04-11 15:25:10

相關問題