次のXML構造が与えられます。
<root>
<data>x</data>
<details>
<some_other_element>...</some_other_element>
<collection>
<element><a>1</a></element>
<element><a>2</a></element>
<element><a>3</a></element>
<collection>
</details>
</root>
MOXyを使用して、これをほぼフラットなPOJOにマーシャリングするにはどうすればよいですか?私はこのアプローチを試しました(簡潔にするためにゲッターとセッターは省略しました):
@XmlRootElement(name = "root")
class Root {
@XmlElement
private String data;
@XmlElement
@XmlPath("details/some_other_element")
private String someOtherElement;
@XmlPath("details")
@XmlElementWrapper(name = "collection")
@XmlElement(name = "element")
private Collection<Element> elements;
}
class Element {
@XmlElement
private String a;
}
残念ながら、これは初期化されていない単一のelements
コレクションを追加するだけです。以下の要素Details
の他のマッピングを壊すので、クラスを宣言する必要はありません(実際に機能します) 。@XmlPath
<details>
MOXyが実際にロードされていることを確認しました(jaxb.propertiesで宣言されているとおり)。
何か案は?