我试图找到适合我的问题的解决方案,但没有成功。 这是问题所在:
我有以下部分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
{
...
}
我想用&#39; item&#39;来包装XmlUserData。或者&#39;用户&#39;标签,所以我不想注释XmlUserData根元素名称。
如何在XmlArray级别执行此操作? 正如您所看到的,我试图命名XmlElementRef,但这导致项目为null ...
修改 我猜我没有意外删除用户的评论(我不记得他/她的名字)。请原谅我。这是关于使用XmlElement而不是XmlElementRef。它还与XmlTransient一起在XmlItemData类中添加了它。但是,现在我已经获得了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: 不明信息的用户,您可以再次发布您的回复,我可以将其标记为有用的吗?
我仍然有XmlItemData元素列表的问题,它应该是XmlUserData类型,但它们是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>
unmarshaller可以期待item标签的这一行吗?它的存在是否会对未编组的消息产生任何影响......?
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xmlUserData"