假设我有以下用于建模XML输出的类:
import java.io.Serializable;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "dataObj")
public class DataObj implements Serializable{
private static final long serialVersionUID = 1L;
private String value;
public DataObj(){}
public DataObj(String v){
this.value = v;
}
public String getValue(){
return this.value;
}
@XmlElement
public void setValue(String v){
this.value = v;
}
}
这将生成以下XML文件:
<dataObj>
<value>
Some Value
</value>
</dataObj>
这很棒,但是,我的API有许多不同的XML输出,都遵循上面的XML结构,但具有不同的元素名称。
例如:
<person>
<name>
John Doe
</name>
</person>
和
<car>
<color>
Sky Blue
</color>
</car>
目前我有10个不同的类使用相同的XML结构。
有没有办法使用一个类来定义XML结构,但是动态地更改元素名称?
答案 0 :(得分:0)
定义一个XSD,其中包含您需要的所有XML标记,如下所示:
<xsd:complexType name="YourClass">
<xsd:sequence>
<xsd:element name="person">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="car">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="color" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
............. and so on
</xsd:complexType>
然后从此XSD生成规范类(POJO),您将使用该类生成XML。 生成XML后,您可以使用XSLT删除所有空白标记(请参阅this)。