2016-03-01 139 views
2

我有一個需求,在我的文件系統中有一個xml,我必須從該xml讀取標記值並填充到我的soap請求中。我完全不知道我該怎麼做。從在soap文件中讀取文件插入xml節點值

我寫了一個Groovy腳本讀取文件:

File file = new File("C:/Users/Desktop/abc.txt") 
fileContent = file.getText() 

現在我想從我的XML源讀取標籤值,並在我的SOAP請求的XML標記填充。

我的示例XML是

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" > 
    <soapenv:Header/> 
    <soapenv:Body> 
     <dto:dto> 
     <mon:abc> 
      <mon:HDR> 
       <mon:MESSAGE_ID>abcd</mon:MESSAGE_ID> 
       <mon:MSG_TIMESTAMP>2015-10-12T11:24:35-06:00</mon:MSG_TIMESTAMP> 

      </mon:HDR> 

     </mon:abc> 
     </dto:dto> 
    </soapenv:Body> 
</soapenv:Envelope> 

我要讀從我的示例XML MESSAGE_ID到我的SOAP請求消息ID。有人可以指導我如何做到這一點?

回答

1

這裏是Groovy腳本來從給定文件

注意,您必須提供樣品不具有正確的數據,失蹤的命名空間中提取郵件ID。

import com.eviware.soapui.support.XmlHolder 
//change the file path here 
def xml = new File('/absolute/file/path').text 
def holder = new XmlHolder(xml) 
def messageId = holder.getNodeValue('//*:MESSAGE_ID') 
assert messageId, "Message Id is empty or null" 
log.info "MessageId is : ${messageId}" 

如果您需要messageId在同一個測試本案的其他步驟中使用,請透過以下附加聲明存放在測試用例級屬性

context.testCase.setPropertyValue('MESSAGE_ID', messageId)

後來你可以在其他步驟(除了groovy)使用${#TestCase#MESSAGE_ID}

在另一個與相同的測試用例的groovy腳本中使用它210