3

変更できない形式で XML を生成する XML ソースがあります。
形式は次のようになります。

    <entry name="ボブ" color="red"/>
    <entry name="ボブ" color="青"/>
    <entry name="ボブ" color="緑"/>

name属性をグループ化に使用できます。
アンマーシャリング後の結果は次のようになります

    クラス エントリ {

        文字列名 = "ボブ";
        文字列の色 = "赤";

    }

    クラス エントリ {

        文字列名 = "ボブ";
        文字列の色 = "緑";

    }

ただし、これらを次のようなものに組み合わせたいと思います。

    クラス エントリ {

        文字列名 = "ボブ";
        色を設定 = { "赤", "青", "緑" };

    }

ヒントはありますか?

4

1 に答える 1

1

JAXB アンマーシャリング プロセスの一部としてこれを行うのは簡単ではないと思います。public Set<String> colorsまた、オブジェクトのフィールドとして aをすでに定義しているはずです。別の 2 番目の処理ステップとして実装するのはかなり簡単です。

entries = unmarshaller.unmarshal(...);
Map<String, Entry> compacted_entries = new HashMap<String, Entry>();
for (Entry entry: entries) {
   if compacted_entries.containsKey(entry.name)
     compacted_entries.get(entry.name).colors.add(entry.color);
   else
     compacted_entries.put(entry.name, entry);
     entry.colors = new HashSet<String>();
     entry.colors.add(entry.color);
   end
}
于 2012-12-25T21:49:04.500 に答える