Java SOAPUI XML排序数组或其他东西

问题描述 投票:0回答:1

我正在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 arrays sorting soapui
1个回答
0
投票

我会创建一个java.util.HashMap<String,String>java.util.HashMap<Long,String>的实例,具体取决于返回empno时返回的数据类型。

只是盲目地为每个职责元素做一个map.put(empno,null),然后你只需要每个员工都在一个hashmap中,因为每个额外添加相同的密钥都会覆盖现有的。

在那之后,简单地说

for (String key : map.keySet()) {
  // do your stuff
}

在我看来,你真的不需要做任何事情来实现目标。

© www.soinside.com 2019 - 2024. All rights reserved.