我正在编写一个扩展类的类,该类使用 Digester 解析来自 API 的 XML 响应(现有类示例,下面的代码片段)。收到响应后,代码会创建一个对象并在其上添加特定的方法。
为简洁而编辑的代码片段:
private Digester createDigester() {
Digester digester = new Digester();
digester.addObjectCreate("GeocodeResponse/result", GoogleGeocoderResult.class);
digester.addObjectCreate("GeocodeResponse/result/address_component", GoogleAddressComponent.class);
digester.addCallMethod("GeocodeResponse/result/address_component/long_name", "setLongName", 0);
...
digester.addSetNext("GeocodeResponse/result/address_component", "addAddressComponent");
Class<?>[] dType = {Double.class};
digester.addCallMethod("GeocodeResponse/result/formatted_address", "setFormattedAddress", 0);
...
digester.addSetNext("GeocodeResponse/result", "add");
return digester;
}
}
但是,我将调用的 API 仅支持 JSON。我找到了一个可能的解决方案,它涉及将 JSON 转换为 XML,然后通过 Digester 运行它,但这似乎非常骇人听闻。
public JsonDigester(final String customRootElementName) {
super(new JsonXMLReader(customRootElementName));
}
有一个更好的方法吗?