Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用带有值的JAXB注释_Java_Xml_Jaxb_Annotations - Fatal编程技术网

Java 使用带有值的JAXB注释

Java 使用带有值的JAXB注释,java,xml,jaxb,annotations,Java,Xml,Jaxb,Annotations,当使用JAXB注释生成XML时,我知道不可能在同一Java成员上使用@xmlement(name=“City”)&@XmlValue,因为它们是互斥的是否有可能@xmlement同时生成一个带有值的XML标记?如果不能做到这一点,将导致大量对象被创建,这似乎有些过分 Java代码 .... @XmlElement(name="City") @XmlValue <---- I'm wanting to do this but I'm limited by the API priv

当使用JAXB注释生成XML时,我知道不可能在同一Java成员上使用
@xmlement(name=“City”)
&
@XmlValue
,因为它们是互斥的是否有可能@xmlement同时生成一个带有值的XML标记?如果不能做到这一点,将导致大量对象被创建,这似乎有些过分

Java代码

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

@XmlValue我们可以尝试使用另一种使用
@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>

某地名称

如果希望元素具有简单文本,则只需要@xmlement注释。如果字段的类型是字符串,JAXB将生成一个xml元素,该元素的值为字符串的值

您唯一需要的是:

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

@xmlement
是否有类似于
defaultValue
的参数作为参数,如果这正是您要寻找的?在这种情况下,我不寻找默认值。
@XmlElement(name="City")
private String city;