0

SoapUI の使用を開始しましたが、Groovy で Soap 応答を処理する方法がわかりません。現在、私のプロジェクトは NetBeans で開かれており、デバッグ後に SoapUI (eviware) にコピー アンド ペーストされます。私の質問は次のとおりです。

def Input = """ <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Body>
      <ns2:getSalesAuditsResponse xmlns:ns2="http://apidto.dto.t2.wsapi.ng.com/">
         <return>
            <code>0909019000004830</code>
            <realOpenAmount>12</realOpenAmount>
            <dueDate>2009-07-11T00:00:00+03:00</dueDate>
         </return>
         <return>
            <code>0909119000006260</code>
            <realOpenAmount>55.75</realOpenAmount>
            <dueDate>2007-02-11T00:00:00+02:00</dueDate>
         </return>
      </ns2:getSalesAuditsResponse>    </S:Body> </S:Envelope>
    """

特定の dueDate を持つ「リターン」ノードを見つける方法は? 私が推測できるように、それは次の近くになる可能性があります。

def document = new groovy.util.XmlSlurper().parseText(Input);
def sa = document.depthFirst().findAll { it.@dueDate=="2007-02-01T00:00:00+02:00" }

ただし、この場合、sa は [] です。結局のところ、元の XML で見つかったノードを削除する方法は?

XMLHolder を試していますが、SoapUI 内に存在する Netbeans の「コンテキスト」変数で初期化する方法がわかりませんでした。

def groovyUtils = new com.eviware.soapui.support.GroovyUtils(???context???) def dataHolder = groovyUtils.getXmlHolder( 入力 ) def data = dataHolder.getDomNode("//return[dueDate="2007-02- 11T00:00:00+02:00"]")

そして最後の一般的な質問: NetBeans で groovy スクリプトをデバッグし、後で SoapUI 3.0.1 で使用することは可能ですか? または、 groovy_for_SoapUI のコードのオートコンプリートとオンデマンドのドキュメントを取得することは不可能ですか?

どうもありがとう

4

1 に答える 1

0

it.@dueDate は、ノードではなく「dueDate」属性を参照しています。次に、コードで「2007-02-01...」を探していますが、これは、入力 XML の実際のノードと一致するために「2007-02-11...」である必要があると思います。

したがって、これは機能します:

def Input = """ <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
      <S:Body>
        <ns2:getSalesAuditsResponse xmlns:ns2="http://apidto.dto.t2.wsapi.ng.com/">
           <return>
              <code>0909019000004830</code>
              <realOpenAmount>12</realOpenAmount>
              <dueDate>2009-07-11T00:00:00+03:00</dueDate>
           </return>
           <return>
              <code>0909119000006260</code>
              <realOpenAmount>55.75</realOpenAmount>
              <dueDate>2007-02-11T00:00:00+02:00</dueDate>
           </return>
       </ns2:getSalesAuditsResponse>
     </S:Body>
    </S:Envelope>
    """
def document = new groovy.util.XmlSlurper().parseText(Input);
def sa = document.depthFirst().findAll {it.dueDate == "2007-02-11T00:00:00+02:00"}

XML を変更するつもりなら、標準の MarkupBuilder または StreamingMarkupBuilder を使用して、必要な形式で新しい XML を出力することになると思います。

于 2009-09-22T17:26:04.850 に答える