2017-10-12 14 views
0

私は、JDBC応答ステップから生成され、次のXMLがあります。私は、後の工程でアサートにこれらの値をつかむしようとしていますJDBC応答からデータを選択することができません

<ResultSet fetchSize="64"> 
    <Row rowNumber="1"> 
     <TW341_LIMITDEFN.LIMIT_CODE>022</TW341_LIMITDEFN.LIMIT_CODE> 
     <TW341_LIMITDEFN.LIMIT_TYPE>N</TW341_LIMITDEFN.LIMIT_TYPE> 
     <TW341_LIMITDEFN.PERIOD_VAL>1</TW341_LIMITDEFN.PERIOD_VAL> 
     <TW341_LIMITDEFN.PERIOD_TYPE>C</TW341_LIMITDEFN.PERIOD_TYPE> 
    </Row> 
    <Row rowNumber="2"> 
     <TW341_LIMITDEFN.LIMIT_CODE>023</TW341_LIMITDEFN.LIMIT_CODE> 
     <TW341_LIMITDEFN.LIMIT_TYPE>N</TW341_LIMITDEFN.LIMIT_TYPE> 
     <TW341_LIMITDEFN.PERIOD_VAL>3</TW341_LIMITDEFN.PERIOD_VAL> 
     <TW341_LIMITDEFN.PERIOD_TYPE>R</TW341_LIMITDEFN.PERIOD_TYPE> 
    </Row> 
    <Row rowNumber="3"> 
     <TW341_LIMITDEFN.LIMIT_CODE>030</TW341_LIMITDEFN.LIMIT_CODE> 
     <TW341_LIMITDEFN.LIMIT_TYPE>N</TW341_LIMITDEFN.LIMIT_TYPE> 
     <TW341_LIMITDEFN.PERIOD_VAL>1</TW341_LIMITDEFN.PERIOD_VAL> 
     <TW341_LIMITDEFN.PERIOD_TYPE>C</TW341_LIMITDEFN.PERIOD_TYPE> 
    </Row> 

を。値がデータマップに届くようにします。

私は、JDBC応答から値をピックアップし、スクリプトに記載された各データのマッピングに割り当てます期待しています私のアサートで、次のGroovyスクリプトを持っている:

def jdbcResponse = context.expand('${JDBC Request for expected results#ResponseAsXml}') 

def xml = new XmlSlurper().parseText(jdbcResponse) 

def expected = xml.'**'.findAll{it.name() == 'Row'}.collect{ [ 
       LimitCode  : it.TW341_LIMITDEFN.LIMIT_CODE.text(), 
       LimitType  : it.TW341_LIMITDEFN.LIMIT_TYPE.text(), 
       LimitPeriod  : it.TW341_LIMITDEFN.PERIOD_VAL.text(), 
       LimitPeriodType : it.TW341_LIMITDEFN.PERIOD_TYPE.text() 
      ] 
      }.sort {it.LimitCode} 

をしかし、値が形成JDBC応答が到着していません。 '期待' は次のようになります。

Thu Oct 12 10:51:05 WST 2017:INFO: 
[{LimitCode=, LimitType=, LimitPeriod=, LimitPeriodType=}, 
{LimitCode=, LimitType=, LimitPeriod=, LimitPeriodType=}, 
{LimitCode=, LimitType=, LimitPeriod=, LimitPeriodType=},] 

私は次のように 'XMLは' を介して来ていることがわかります。

木10月12日10時55分19秒WST 2017:INFO:022N1C023N3R030N1C033N5R043N3R093N1C601S1C

JDBC応答XMLからこれらの値をデータマップ値に割り当てることができない理由は何ですか?

+0

マット、それが助けかどうかを確認するために解決策を確認してください。 – Rao

答えて

2

要素名が.であるためです。したがって、あなたは以下に示すように単一引用符( ')間の要素名を配置する必要があります。

def expected = xml.'**'.findAll{it.name() == 'Row'}.collect{ [ 
              LimitCode       : it.'TW341_LIMITDEFN.LIMIT_CODE'.text(), 
              LimitType       : it.'TW341_LIMITDEFN.LIMIT_TYPE'.text(), 
              LimitPeriod     : it.'TW341_LIMITDEFN.PERIOD_VAL'.text(), 
              LimitPeriodType : it.'TW341_LIMITDEFN.PERIOD_TYPE'.text() 
             ] 
          }.sort {it.LimitCode} 
+0

ラオーをもう一度ありがとう。欠かすことのない小さなものが大事! – Matt

関連する問題