2010-12-09 10 views
6

मैं SOAP के लिए रूबी savon का उपयोग कर देख रहा हूँ। पूरी तरह से मासोचस्टिक कारणों से मुझे विशेषताओं वाले SOAP तत्वों से निपटना होगा।मैं savon नेस्टेड विशेषताओं का उपयोग कैसे करूं! हैश?

तो, कोई समस्या नहीं है, वहाँ जो इस क्षमता पर प्रकाश डाला गया savon डॉक्स साइट पर एक उदाहरण है:

{ :person => "Eve", :attributes! => { :person => { :id => 666 } } }.to_soap_xml 
"<person id=\"666\">Eve</person>" 

मेरे समस्या मैं कैसे बच्चे तत्वों पर गुण सेट करते हैं, उदाहरण के लिए, कहते हैं कि मैं कोई पता जोड़ने है व्यक्ति को चाइल्ड तत्व:

{ :person => {:address => ""}, :attributes! => { :person => { :id => 666 } } }.to_soap_xml 

अब मैं पता तत्व को एक आईडी विशेषता जोड़ना चाहते हैं:

यह कोई जाने अगर विशेषताओं हैश में मैं घोंसला पता:

{ :person => {:address => ""}, :attributes! => { :person => { :id => 666, :address => {:id => 44 }} }}.to_soap_xml 

तो मेरा सवाल यह है कि, मैं यह कैसे प्राप्त कर सकता हूं?

<person id=666><address id=44></address></person> 

उत्तर

14

आप पास थे - सिर्फ एक ही हैश कि मान में :attributes! कुंजी डाल करने के लिए की जरूरत है।

{ 
    :person => { 
    :address => "", 
    :attributes! => { :address => { :id => 44 } } 
    }, 
    :attributes! => { :person => { :id => 666 } } 
}.to_soap_xml 

# => "<person id=\"666\"><address id=\"44\"></address></person>" 
15

मैं पिछले उत्तर के मुद्दे पर भाग गया और अब काम नहीं कर रहा हूं। आखिरकार मुझे https://github.com/savonrb/savon/issues/518 मिला जो मुझे अब विशेषताओं को जोड़ने के लिए सही वाक्यविन्यास में ले जाता है।

तो पिछले उदाहरण अब ..

{ 
    :person => { 
    :@id => 666, 
    :address => { 
     :@id => 44 
    } 
    } 
} 

निम्नलिखित में से कौन एक्सएमएल

<person id="666"> 
    <address id="44"/> 
</person> 
+0

कैसे मैं इस ब्लॉक के लिए उपयोग कर सकते हैं उत्पन्न होगा के रूप में की जाएगी <स्ट्रिंग xmlns = "http : //schemas.microsoft.com/2003/10/Serialization/Arrays "> 40665905851 chirag7jain

+0

इसके लिए धन्यवाद !! –

+3

यदि कुछ गरीब आत्मा सावन एक्सएमएल विशेषता उत्पादन पर जानकारी की तलाश में आती है: 'पता: {' सामग्री! ': "डाउनिंग स्ट्रीट",' @id ': 44}' 'पता आईडी = "44' उत्पन्न होगी> डाउनिंग सड़क ' – Sharagoz

संबंधित मुद्दे