我正在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上对数组进行排序,并且只在员工更改时构建一个获取其他员工数据的请求。这将使代码更快。
现在我的问题是:最好的方法是什么?使用多维数组并对它们进行排序?或者有更好的方法吗?
提前致谢,
说过
我会创建一个java.util.HashMap<String,String>
或java.util.HashMap<Long,String>
的实例,具体取决于返回empno时返回的数据类型。
只是盲目地为每个职责元素做一个map.put(empno,null)
,然后你只需要每个员工都在一个hashmap中,因为每个额外添加相同的密钥都会覆盖现有的。
在那之后,简单地说
for (String key : map.keySet()) {
// do your stuff
}
在我看来,你真的不需要做任何事情来实现目标。