よし、私は世紀のマインドスクリューに到達し、これを考えながら数時間座った. ここに例を簡単に追加します。
public class AdUnitSizes {
protected String environmentType;
@XmlElement(name = "size")
protected List<Size> sizes;
protected List<Companions> companions;
基本的に、これを XML ファイルとして構造化する場合、仮想的には次のようなものになります (注: Companions は AdUnitSize[] 型です)。
<adUnitSizes>
<size>
<width>800</width>
<height>600</height>
<isAspectRatio>true</isAspectRatio>
</size>
<environmentType>BROWSER</environmentType>
<companions> <!--adunitsize[]-->
<size>
<width>800</width>
<height>600</height>
<isAspectRatio>true</isAspectRatio>
</size>
<environmentType>BROWSER</environmentType>
<companions>
<size>
<width>800</width>
<height>600</height>
<isAspectRatio>true</isAspectRatio>
</size>
<environmentType>BROWSER</environmentType>
<companions>...</companions>
</companions>
</companions>
</adUnitSizes>
さて、私が指摘しようとしているように、AdUnitSizes には 3 つのフィールドが含まれています。サイズ、環境タイプ、コンパニオン。私が今 Java でやろうとしているのは、私が作成したオブジェクト ラッパー (最初の例) を使用して、すべての子 Companions オブジェクト、およびその子 Companions オブジェクトを、反復がそれ以上進めなくなるまで反復することです (私たちのシステムではありそうもないことです)。 Companions は 3 レベル以上の深さになりますが、とにかくこれに対応する必要があります)
これは私が試したことです:
AdUnitSize[] adUnitSizeArray = adUnit.getAdUnitSizes();
if(adUnitSizeArray != null){
List<AdUnitSizes> adUnitSizesList = adUnitWrapper.getAdUnitSizes();
for(int i = 0; i < adUnitSizeArray.length; i++){
AdUnitSizes adUnitSizes = new AdUnitSizes();
aem.adservices.google.dfp6.om.Size size = new aem.adservices.google.dfp6.om.Size(); //Name clash with Google Size Class
size.setHeight(adUnitSizeArray[i].getSize().getHeight());
size.setWidth(adUnitSizeArray[i].getSize().getWidth());
size.setIsAspectRatio(adUnitSizeArray[i].getSize().getIsAspectRatio());
adUnitSizes.getSizes().add(size);
adUnitSizes.setEnvironmentType(adUnitSizeArray[i].getEnvironmentType().getValue());
List<Companions> companionsList = adUnitSizes.getCompanions();
//Need to iterate through all of adUnitSizeArray's Companions, and its companions children and so forth
}
}
何か案は?私はこれに間違って近づいていますか?