我试图找到适合我的问题的解决方案,但没有成功。这是问题所在:
我有以下部分 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,所以我不想注释 XmlUserData 根元素名称。
如何在 XmlArray 级别执行此操作?如您所见,我试图命名 XmlElementRef,但这会导致项目为空...
编辑: 我猜我不小心删除了用户的评论(我不记得他/她的名字)。请原谅我。它是关于使用 XmlElement 而不是 XmlElementRef。它与在 XmlItemData 类上添加的 XmlTransient 一起提供了帮助。但是,现在我得到了空元素列表。这是我的 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 类型,但它们是空的......任何想法,我做错了什么......?
提前致谢!
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>
解组器是否可以预期项目标签处的这一行?它的存在是否对解组消息有任何影响......?
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xmlUserData"