我正在SoapUI中构建测试。我的回应很大(> 3500个职责)。对于该响应,我需要构建一个请求并执行该请求。目前,代码(Java)可以运行,但是我想优化代码。
对于每项职责,我都会创建一个请求以获取其他员工数据,并使用for next循环执行该请求。下面是我得到的大型XML响应的示例。
<DUTIES>
<DUTY>
<EMPNO>1</EMPNO>
<LOCATION>AMS</BASE_STATION>
<ACTUALTIME>2019-02-20T06:00:00</ACTUALTIME>
<POSITIONING_CODE>1</POSITIONING_CODE>
</DUTY>
<DUTY>
<EMPNO>2</EMPNO>
<LOCATION>RTM</BASE_STATION>
<ACTUALTIME>2019-02-20T06:00:00</ACTUALTIME>
<POSITIONING_CODE/>
</DUTY>
<DUTY>
<EMPNO>1</EMPNO>
<LOCATION>AMS</BASE_STATION>
<ACTUALTIME>2019-02-21T06:00:00</ACTUALTIME>
<POSITIONING_CODE>1</POSITIONING_CODE>
</DUTY>
</DUTIES>
从样本中您可以看到,同一员工在响应中是多次,因此当前我多次调用同一员工的请求。我想对此进行优化。
在SoapUI中,我可以使用以下语句:
String[] emps = resp.getNodeValues("/Duties/Duty/string(EMPNO)");
String[] locs = resp.getNodeValues("/Duties/Duty/string(LOCATION)");
String[] tims = resp.getNodeValues("/Duties/Duty/string(ACTUALTIME)");
然后,我想对emps上的数组进行排序,并且仅在员工变更时建立一个获取其他员工数据的请求。这将使代码更快。
现在我的问题是: 做这个的最好方式是什么?使用多维数组并对它们排序?还是有更好的方法呢?
预先感谢
说
答案 0 :(得分:0)
当您检索empno时,我将根据返回的数据类型创建java.util.HashMap<String,String>
或java.util.HashMap<Long,String>
的实例。
只需对每个职责元素盲目地执行map.put(empno,null)
,此后您将只在哈希图中使每个员工一次,因为每次添加相同的键都会覆盖现有的键。
之后,简单地
for (String key : map.keySet()) {
// do your stuff
}
如我所见,您真的不需要对任何东西进行排序就可以到达那里。