使用带有值的JAXB注释

时间:2016-04-15 20:51:33

标签: java xml jaxb annotations

使用JAXB注释生成XML时,我知道无法使用@XmlElement(name="City")& @XmlValue在同一Java成员上,因为它们是互斥的。 @XmlElement是否可以同时生成带有值的XML标记?无法执行此操作会导致创建大量对象并且似乎过度。

Java代码

....
@XmlElement(name="City")
@XmlValue       <---- I'm wanting to do this but I'm limited by the API
private String city;

预期输出

....
<City>some value here</City>
....

2 个答案:

答案 0 :(得分:0)

我们可以尝试使用另一种使用@XmlValue注释的类型来实现相同的目标。

以下是您可以尝试的内容 -

@XmlRootElement(name="CityRoot")
@XmlType(name="CityRootType")
public class CityRoot {
    @XmlElement(name="City")
    public CityName s;
}

CityName定义如下

public class CityName {
    @XmlValue
    String name;
}

现在,将这两个文件提供给schemagen以生成.xsd文件并使用该生成.xml文件进行验证。

下面是生成xml文件时生成它的方式 -

<?xml version="1.0" encoding="UTF-8"?>
<CityRoot>
      <City>SomeCityName</City>
</CityRoot>

答案 1 :(得分:0)

如果您想要一个包含简单文本的元素,那么您需要的唯一注释是@XmlElement注释。如果字段的类型是String,则JAXB生成一个xml元素,其String值作为元素的值。

你唯一需要的是:

@XmlElement(name="City")
private String city;