2013-07-17 57 views
0

我想在JMeter的BeanShell的後處理器串連字符串,但不知它不工作,看起來像java的方式處理多行字符串不能在這裏工作:字符串串連的JMeter BeanShell的+

String poXML="<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"><S:Header/><S:Body><ns7:NewPORequest " + "xmlns:ns2=\"http://services.portal.com/pro/common\" xmlns:ns5=\"http://services.portal.com/pro/po\" + "xmlns:ns7=\"http://services.portal.com/proc/ws\">" + 
"<ns7:tracingLevel>OFF</ns7:tracingLevel><ns7:userId>TestUtil</ns7:userId><ns7:applicationId>RF</ns7:applicationId>" + 
"<ns7:userType>Buyer</ns7:userType><ns5:PurchaseOrder><ns5:poExternalId>XXX-930220</ns5:poExternalId>" + 
"<ns5:repairOrderNumber>vars.get("OrderNumber")</ns5:repairOrderNumber>"; 

我可以連接簡單的一行,但是當涉及到多行時,它不起作用。
單行:

print("PO XML="+"<ns5:repairOrderNumber>"+vars.get("OrderNumber")+"</ns5:repairOrderNumber>"); 

回答

1

沒什麼特別的,但:

  1. 缺少的結束近...xmlns:ns5=\"http://services.portal.com/pro/po\" + "xmlns...報價 - 應該是...xmlns:ns5=\"http://services.portal.com/pro/po\"" + "xmlns...;
  2. 缺少轉義字符在repairOrderNumber>vars.get("OrderNumber")</ns5: - 使用>vars.get(\"OrderNumber\")<如果你想有字符串本身的結果(即vars.get("OrderNumber"))或連接單獨+ vars.get("OrderNumber") +解析表達式變量的值(如你的第二個樣本)。

    String poXML="<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"><S:Header/><S:Body><ns7:NewPORequest"+" xmlns:ns2=\"http://services.portal.com/pro/common\""+" xmlns:ns5=\"http://services.portal.com/pro/po\""+" xmlns:ns7=\"http://services.portal.com/proc/ws\">"+"<ns7:tracingLevel>OFF</ns7:tracingLevel><ns7:userId>TestUtil</ns7:userId><ns7:applicationId>RF</ns7:applicationId>"+"<ns7:userType>Buyer</ns7:userType><ns5:PurchaseOrder><ns5:poExternalId>XXX-930220</ns5:poExternalId>"+"<ns5:repairOrderNumber>"+vars.get("OrderNumber")+"</ns5:repairOrderNumber>"; 
    

除了看起來像usage of StringBuilder.append() is a bit better way

+0

謝謝!有效!!!! – Akshay