2011-06-11 16 views
1

我有需要像這樣被格式化XML標籤:軌3,XML格式和建設者

<AddDealRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 

我似乎無法得到這個工作正常,使用建設者。我在構建器中嘗試以下代碼:

xml.AddDealRequest(:xmlns:xsi => "http://www.w3.org/2001/XMLSchema-instance", :xmlns:xsd => "http://www.w3.org/2001/XMLSchema") do 

但很明顯,第二個冒號丟掉了符號。有什麼辦法可以逃避第二個符號嗎?或者這個聲明是完全必要的嗎?

謝謝!

回答

3

嘗試引用您的符號:

xml.AddDealRequest(
    :'xmlns:xsi' => "http://www.w3.org/2001/XMLSchema-instance", 
    :'xmlns:xsd' => "http://www.w3.org/2001/XMLSchema" 
) 

您也可以嘗試使用字符串代替的符號

xml.AddDealRequest(
    'xmlns:xsi' => "http://www.w3.org/2001/XMLSchema-instance", 
    'xmlns:xsd' => "http://www.w3.org/2001/XMLSchema" 
) 

,但我不知道,如果製造商將很樂意與但documentation includes things like this

xm.target("name"=>"compile", "option"=>"fast") 
# => <target option="fast" name="compile"\> 

所以字符串的屬性名稱應該工作。

的時間irb有一點可能會有助於澄清事情:

>> 'where_is:pancakes_house'.to_sym 
=> :"where_is:pancakes_house" 

>> :'xmlns:xsi'.to_s 
=> "xmlns:xsi" 
+0

沒有什麼奇怪的,這些情況都不起作用,即使只使用帶冒號的字符串也是如此。只要我刪除了冒號,它就能正常工作......有什麼方法可以逃脫冒號? – goddamnyouryan 2011-06-12 03:05:56

+0

@Ryan:在這種情況下,「不起作用」是什麼意思?例外?輸出錯誤?沒有輸出? – 2011-06-12 03:26:56

+0

啊對不起!我應該澄清!輸出在那裏,沒有例外,這只是不正確的。它讀取:它應該讀取時: goddamnyouryan 2011-06-12 03:55:18

1

而不是指望任何人通過在最早回答所有的評論閱讀,我只是張貼在這裏的結果:

Firefox不顯示xmlns屬性(至少不會與默認值匹配)。如果您查看源代碼(Ctrl + U)或將Chrome用作瀏覽器,則會看到缺少的屬性出現在xml輸出中。

+0

的確,謝謝! 只是想知道爲什麼它沒有在Firefox中顯示xmlns:xxx屬性! – zenw0lf 2016-02-11 03:27:36