0

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));
  }

これを行うより良い方法はありますか?

4

1 に答える 1