2011-08-08 5 views
8

は、ここで私は、関連するSOAP :: Liteのコードであると信じるものだ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, 
     ), 
    ), 
); 

それは<c-gensym9 /><requestMessage>の内部にネストされた理由を私は理解することはできません。この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> 

を生成しています私はそこにいる必要はありません。誰もそれがそこにある理由を説明することはできますか?コードを書き換えて、そうでないようにする方法は?

答えて

2

ルックミリアンペア、

$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

はい、私は残念ながら、それはリンクが死んでいるのです...そう、それは役に立たないです...そのポストを見つけ見ていないgensymは。 – 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

関連する問題