假设我有以下两个类,我希望使用jaxb
进行编组@XmlRootElement(name = "VirtualizationData")
public class VirtualizationData
{
@XmlElement(name = "VirtualOrganization")
public List<VirtualOrganization> Organizations = new ArrayList<VirtualOrganization>();
}
和
public class VirtualOrganization
{
public VirtualOrganization(String p_name, String p_id)
{
m_name = p_name;
m_id = p_id;
}
@XmlAttribute(name = "Name")
private String m_name;
@XmlAttribute(name = "Id")
private String m_id;
}
这是一个编组的xml
的示例<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<VirtualizationData>
<VirtualOrganization Name="localhost" Id="555"/>
</VirtualizationData>
我有两个问题 -
感谢。
更新
根据词典的回答,我想更多地澄清我的问题。困扰我的是这些注释的冗长以及我在不同的地方有相同的字符串和注释的事实。有人提出这个问题,希望找到一个针对该问题的公约配置式解决方案。有没有办法在jaxb中创建这样的约定?
答案 0 :(得分:1)
简短回答:不,没有(简单)方法可以在没有注释的情况下进行更改,因为注释是(简单)改变它的方法。
答案很长:
virtualizationData
,VirtualizationData
,virtualization-data
都有意义。但是默认情况下必须选择一种方法。如果是这样,VirtualizationData
,您可以随时问 - 为什么不virtualizationData
?VirtualOrganization
是列表的泛型类型参数。在编译模式时,您可以轻松获得类似List<Serializable>
的内容,但Serializables
作为元素名称并不真正有意义。因此,我们可以得出结论,集合项类的名称不一定为该属性提供有意义的名称。我认为你不能在VirtualOrganization
上定义默认的集合元素名称(如果这是你要问的那样)。我上面说过,没有(简单的)方法可以改变它。但这是可行的。您可以编写和配置自己的注释阅读器,它将实现不同的默认命名。但是我肯定不会这样做。只需使用注释即可自定义。