-1

SOがこの種の質問を尊重しないことは知っていますが、perlに最適なXML操作ライブラリを選択するために多くの時間を費やしましたが、値を挿入して出力する方法を明確に理解できる例はほとんど見つかりませんでした結果の xml を文字列変数に変換します。

値のない着信 XML は次のとおりです。

my $GetLibByNameAndVersionEnvelope = '<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
                                            <s:Body>
                                                <GetLibByNameAndVersion xmlns="LibService">
                                                    <name></name>
                                                    <version></version>
                                                </GetGridLibByNameAndVersion>
                                            </s:Body>
                                        </s:Envelope>';

名前ノードとバージョン ノードにテスト値を入力する必要があります。これを行う方法の例を提供してください。結果として、必要な XML を含む文字列が得られます。

4

2 に答える 2

3

これはSOAPリクエストですよね?

この単純な SOAP 呼び出しだけが常に同じように見える場合は、テンプレート エンジンを使用し、プレースホルダーを配置して、XML モジュールをまったく気にしないことをお勧めします。それはずっと安くなるでしょう。

Text::Templateのようなものを使用して、テンプレートをファイル システムのどこかに配置するか (バージョン管理に追加できるように)、単純にDATAセクションのコードに追加するか、単純な文字列変数として追加することができます。もちろん、次のように文字列として入れることもできます。

my $ua = LWP::UserAgent->new;
my $res = $ua->post($url, <<"SOAP");
<s:Envelope>
  <s:Body>
    <GetLibByNameAndVersion xmlns="LibService">
      <name>$name</name>
      <version>$version</version>
    </GetGridLibByNameAndVersion>
  </s:Body>
</s:Envelope>
SOAP

この例はあまり動的ではないため、API に変更がある場合はコードを変更する必要があります。ただし、非常に単純な要求の場合、これが最も迅速な方法です。API に単純なメソッドが 1 つしかない場合は、これ (またはテンプレート) が適している場合があると思います。

于 2013-02-06T12:01:20.330 に答える
3

更新: Perl には特に SOAP を処理するための一連のモジュールがあることをご存知ですか? この記事は、始めるのに適した場所のようです。

XML::Twigのウェブサイトにチュートリアルのリストがあります。このチュートリアルをお勧めします。これは古いですが、興味のあるすべてのことを確実にカバーします。

また、CPAN のドキュメントには、ほとんどの場合、モジュールの使用方法の簡単な例が含まれています。 XML::Twigのドキュメンテーションは確かにそうです。 そうXML::Simpleです。

を使った記事XML::Simpleはこちら。

于 2013-02-06T12:06:51.210 に答える