我正在编写一个类,该类扩展了一个使用Digester来解析来自API的XML响应的类(示例existing class,下面的代码片段)。收到响应后,代码会创建一个对象并在其上添加特定的方法。
为简洁起见而编辑的代码段:
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。我发现了一个可能的solution,它涉及将JSON转换为XML然后通过Digester运行它,但这看起来非常糟糕。
public JsonDigester(final String customRootElementName) {
super(new JsonXMLReader(customRootElementName));
}
有更好的方法吗?
答案 0 :(得分:0)
基本上,Digester包允许您配置XML - &gt; Java的 对象映射模块,触发称为规则的某些操作 每当识别出嵌套XML元素的特定模式时。一个 您可以使用丰富的预定义规则集,也可以 也创建自己的。
为什么你认为它适用于JSON?