2016-08-04 20 views
2

So habe ich diese komplizierte XML und will es zu Array analysieren und von Savon an den Server senden. Die Frage ist, wie kann ich Parameter parsen?Wie zu analysieren und senden ganz komplizierten XML aus Code in Rails

<soapenv:Header> 
    <add:MessageID 
     xmlns:add="http://www.w3.org">sdhuf78dd67-8932 
    </add:MessageID> 
    <add:Action 
     xmlns:add="http://www.w3.org/2005">http://google/FMP 
    </add:Action> 
    <add:To 
     xmlns:add="http://www.w3.org/2005/08/addressing">https://no1.testbla.com/1HAD9ANA1 
    </add:To> 
    <link:TransactionFlowLink 
     xmlns:link="http://google/2010/06/"/> 
     <oas:Security 
      xmlns:oas="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> 
      <oas:UsernameToken oas1:Id="UsernameToken-1" 
       xmlns:oas1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> 
       <oas:Username>AHOJHOLA</oas:Username> 
       <oas:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">Nonce</oas:Nonce> 
       <oas:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">HashedPassword</oas:Password> 
       <oas1:Created>CurrentGMTDateAndTime</oas1:Created> 
      </oas:UsernameToken> 
     </oas:Security> 
     <AMA_SecurityHostedUser 
      xmlns="http://xml.amfds.com/2010/06"> 
      <UserID AgentDutyCode="DA" RequestorType="BO" PseudoCityCode="HIATRA67" POS_Type="5"/> 
     </AMA_SecurityHostedUser> 
</soapenv:Header> 

Ich weiß, wie zum Beispiel in die parsen: Aktion ohne Parameter: mit @ Präfix

"add:Action" => "http://google/FMP" 

Und ich weiß, dass der Parameter geschrieben werden soll.

Aber ich weiß nicht, wie man es zusammen schreibt. Ist das richtig?

"add:Action" => { 
    "@xmlns:add" => "http://www.w3.org/2005", 
    "http://google/FMP" 
},etc. 

Antwort

1

Um diese Informationen zu erfahren, müssen Sie bei den Gyoku gem einen Blick gehen und haben: das Juwel, das Savon verwendet Ruby-XML-Hashes in übersetzen. Genauer gesagt, the documentation on using explicit XML attributes. Mit Blick auf das, wir die XML bekommen Sie suchen mit dem folgenden hash:

{ 
    "add:Action" => { 
    "@xmlns:add" => "http://www.w3.org/2005", 
    :content! => "http://google/FMP" 
    } 
} 

Wir können dies testen, in IRB direkt mit Gyoku:

irb> require 'gyoku' 
# => true 
irb> Gyoku.xml({"add:Action" => { "@xmlns:add" => "http://www.w3.org/2005", :content! => "http://google/FMP" } }) 
# => "<add:Action xmlns:add=\"http://www.w3.org/2005\">http://google/FMP</add:Action>" 
+0

Vielen Dank, es funktioniert:) – Boomerange