2011-08-08 59 views
8

這就是我認爲是相關的SOAP ::精簡版代碼SOAP :: Lite生成<c-gensym ..>我該如何擺脫它?

my $req3 = SOAP::Lite->new(
    readable => 1, 
    autotype => 0, 
    proxy => 'https://ics2wstest.ic3.com/commerce/1.x/transactionProcessor', 
); 

$req3->requestMessage(
    \SOAP::Data->new(
     name => 'item', 
     attr => { foo => '0' }, 
     value => \SOAP::Data->new(
      name => 'foo', 
      value => 1, 
     ), 
    ), 
); 

它生成此XML

<?xml version="1.0" encoding="UTF-8"?> 
<soap:Envelope 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
<soap:Body> 
<requestMessage> 
    <c-gensym9> 
    <item foo="0"> 
     <foo>1</foo> 
    </item> 
    </c-gensym9> 
</requestMessage> 
</soap:Body> 

爲什麼<c-gensym9 />嵌套的<requestMessage>內我想不出但我不需要在那裏。任何人都可以解釋爲什麼它在那裏?以及我如何重寫代碼,使其不是?

回答

2

看,不用gensym

$req3->requestMessage(
    ## \SOAP::Data->new(## this makes gensym 
    SOAP::Data->new(## no refref, no gensym 
     name => 'item', 
     attr => { foo => '0' }, 
     value => \SOAP::Data->new(
      name => 'foo', 
      value => 1, 
     ), 
    ), 
); 

又見http://perlmonks.com/?node_id=906383

0

不幸的是,我們真正需要幫助回答的代碼是您(非常無意)排除爲... # noisy SOAP::Data stuff的代碼。

SOAP :: Lite可以相當gensym高興。只要它不理解它試圖生成的完整數據結構,它就會使用這個標籤。因此,在您的示例中,定義requestMessage標記的SOAP :: Data對象似乎在不期望的情況下傳遞給數組,因此需要未命名(c-gensym5)中間標記。

鑑於上面生成的東西,看起來你可能試圖傳遞一個散列[ { data } ]?每當SOAP :: Lite認爲名稱應該存在時(即[ no name for hash --> { data } ]),當沒有提供名稱時,它將「gensym」來澄清輸出。這也可能是SOAP :: Lite期望某些內容不會被轉義。

在soaplite.com非常官方的看職位,稱爲How do you turnoff the blasted c-gensym elements?不幸自己不是很有用(因爲鏈接已經死了),但回機器可能會幫助。

我希望這會有所幫助。對不起,我不能更具體!

+0

是我發現後...不幸的是它的鏈接都死了...所以它也沒用。 – xenoterracide

+0

@JT更新我的代碼是一個完整的示例 – xenoterracide

+0

該文章中的鏈接可以在http://www.techrepublic.com/article/a-hands-on-tour-of-soaplite/1045078和http: //web.archive.org/web/20070308122644/http://www.majordojo.com/archives/2003_04.html – Ether

相關問題