私の問題に適合する解決策を見つけようとしましたが、成功しませんでした。問題は次のとおりです。
私はXML構造の次の部分を持っています(私は影響を与えません)
<users>
<array>
<item>
<username></username>
<email></email>
</item>
...
<item>
...
</item>
<array>
</users>
XMLのその部分のクラス構造は次のとおりです。
@XmlRootElement(name = "users")
public class XmlUsers extends XmlData
{
@XmlElement
public XmlArray array;
}
@XmlRootElement(name = "array")
public class XmlArray
{
@XmlElementRef(name = "item")
public List<XmlItemData> items;
}
@XmlSeeAlso({ XmlUserData.class })
public abstract class XmlItemData
{
}
@XmlRootElement
public class XmlUserData extends XmlItemData
{
...
}
XmlUserData を「item」または「user」タグでラップしたいので、XmlUserData ルート要素名に注釈を付けたくありません。
XmlArrayレベルでこれを行う方法は? ご覧のとおり、XmlElementRef という名前を付けようとしましたが、これにより項目が null になります...
編集: ユーザーのコメントを誤って削除したと思います (名前は覚えていません)。失礼します。XmlElementRef の代わりに XmlElement を使用することについてでした。XmlItemData クラスにも追加された XmlTransient と一緒に役立ちました。しかし、今は null 要素のリストを取得しています。ここに私の XmlUserData クラスがあります:
@XmlRootElement
public class XmlUserData extends XmlItemData
{
@XmlElement(name = "username")
public String username;
@XmlElement(name = "first_name")
public String firstName;
@XmlElement(name = "last_name")
public String lastName;
@XmlElementWrapper(name = "links", required = false)
@XmlElements({ @XmlElement(name = "delete"), @XmlElement(name = "next"),
@XmlElement(name = "self"), @XmlElement(name = "users"),
@XmlElement(name = "watched") })
public List<XmlLink> links;
@XmlElement(name = "url")
public String url;
@XmlElement(name = "id")
public int id;
@XmlElement(name = "fullname")
public String fullname;
@XmlElement(name = "email")
public String email;
}
EDIT2: 不明なユーザー様、返信をもう一度投稿していただけますか?
そして、私はまだ XmlUserData タイプである必要がある XmlItemData 要素のリストに問題がありますが、それらは null です...任意のアイデア、私は何が間違っていますか...?
前もって感謝します!
EDIT3: クラス構造を JAXB でマーシャリングしました。以下のようになります。
<rsp>
<total_results>0</total_results>
<users>
<array>
<item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xmlUserData">
<id>0</id>
</item>
</array>
</users>
</rsp>
アンマーシャラーは item タグのこの行を期待できますか? その存在は、マーシャリングされていないメッセージに影響を与えますか...?
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xmlUserData"