java - Java SOAPUI XML 排序数组或其他
问题描述
我正在 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 上的数组进行排序,并且只在员工更改时构建一个获取额外员工数据的请求。这将使代码更快。
现在我的问题是:最好的方法是什么?使用多维数组并对它们进行排序?或者有没有更好的方法来做到这一点?
提前致谢,
说
解决方案
当您检索 empno 时,我将创建一个实例java.util.HashMap<String,String>
或java.util.HashMap<Long,String>
取决于返回的数据类型。
只是盲目地map.put(empno,null)
为每个职责元素做一个,之后你只会让每个员工在 hashmap 中一次,因为每次添加相同的键都会覆盖现有的。
之后,简单地
for (String key : map.keySet()) {
// do your stuff
}
正如我所看到的,你真的不需要对任何东西进行排序就可以到达那里。
推荐阅读
- ios - iOS 上未收到 Firebase 云消息传递通知
- python - Python上的泊松拟合函数故障
- python - 处理 Python Lambda 函数中的缺失值
- reporting-services - SSRS tablix 和矩阵混合?显示每一行细节,但有些列就像矩阵
- git - Git:合并第二个分支后将第三个分支重新定位到第一个分支的更好方法
- javafx - 我在小组上画了铅笔画,但画的时候留下了一些空隙。如何使它平滑?
- database - Firebase 存储数据库
- python - 在 Python 中创建以变量而不是字符串开头的文件名
- parallel-processing - 从spark java中数据集的特定分区读取数据
- python - 为什么我不能直接使用 eval(entire_string),为什么我需要使用 parser.expr(entire_string).compile()?