Java SOAPUI XML排序数组或其他

时间:2019-02-22 14:42:34

标签: java arrays sorting soapui

我正在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上的数组进行排序,并且仅在员工变更时建立一个获取其他员工数据的请求。这将使代码更快。

现在我的问题是: 做这个的最好方式是什么?使用多维数组并对它们排序?还是有更好的方法呢?

预先感谢

1 个答案:

答案 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
}

如我所见,您真的不需要对任何东西进行排序就可以到达那里。