我正在使用XmlRpcClient连接到XML-RPC服务器 在我对XML响应中的请求的响应中,我将得到:
int cpuLoad,
String fanStatus,
String fanStatusWorst,
String temperatureStatus,
String temperatureStatusWorst,
String rtcBatteryStatus,
String rtcBatteryStatusWorst,
String voltagesStatus,
String voltagesStatusWorst,
String operationalStatus
我正在使用
HashMap result = (HashMap) xmlRpcClient.execute(METHOD_DEVICE_HEALTH, params );
检索结果,但不确定如何迭代每个值 找到operationalStatus值。 使用xmlRpcClient解析结果是否有更优雅的解决方案?所以我只是检索我感兴趣的字段?
由于
答案 0 :(得分:1)
实际上,根据您的观点,您的问题有多个答案。
1) If you are communicating with Java based system using XML-RPC
Apache XML-RPC库附带了一个名为ClientFactory
的便捷类。此类允许您将服务接口(在您的情况下是您正在调用的对象的接口METHOD_DEVICE_HEALTH
)绑定到使用者的JVM中的对象(调用xmlRpcClient.execute(METHOD_DEVICE_HEALTH, params)
的对象)。有关实施的更多详细信息,请查看this link。
在这个中心里,你甚至可以拥有像
这样的转移对象public class DeviceHealth {
int cpuLoad,
String fanStatus,
String fanStatusWorst,
String temperatureStatus,
String temperatureStatusWorst,
String rtcBatteryStatus,
String rtcBatteryStatusWorst,
String voltagesStatus,
String voltagesStatusWorst,
String operationalStatus
// getters and setters
}
并且服务类中的方法直接返回其类型
public interface HealthService {
DeviceHealth checkDeviceHealth(int id);
}
public class DefaultHealthService implements HealthService {
public DeviceHealth checkDeviceHealth(int id) {}
}
框架将自动为此对象序列化和反序列化。
2) If you are communicating with other systems
那么,在这种情况下,你的gona必须处理你自己的序列化和反序列化过程。您可以使用该JAXB,它具有内置JDK 1.6和1.7的参考实现。 This post让您了解如何执行此操作。