Java 使用JAXB/JAX-RS将XML元素包装到子元素中

Java 使用JAXB/JAX-RS将XML元素包装到子元素中,java,xml,jaxb,jax-rs,Java,Xml,Jaxb,Jax Rs,我有一个将被序列化/反序列化为XML的类 @XmlRootElement(name = "nnxml") @XmlAccessorType(XmlAccessType.FIELD) public class InfoRequest { @XmlElement(name = "vendor_id") private String vendorId; @XmlElement(name = "vendor_authcode") private String auth

我有一个将被序列化/反序列化为XML的类

@XmlRootElement(name = "nnxml")
@XmlAccessorType(XmlAccessType.FIELD)
public class InfoRequest {

    @XmlElement(name = "vendor_id")
    private String vendorId;

    @XmlElement(name = "vendor_authcode")
    private String authCode;
}
这目前为我提供了一致且正确的XML:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<nnxml>
    <vendor_id>vendor id</vendor_id>
    <vendor_authcode>auth code</vendor_authcode>
</nnxml>

厂商标识
认证码
但是,我需要将XML元素包装到另一个元素中,如下所示:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<nnxml>
  <info_request>
      <vendor_id>vendor id</vendor_id>
      <vendor_authcode>auth code</vendor_authcode>
  </info_request>
</nnxml>

厂商标识
认证码

如何在
info\u请求
元素中包装上述字段?我必须创建类似于内部类的东西吗?还是有一种更简单的方法?

一种方法是创建这样的包装类并插入类

@XmlRootElement(name = "nnxml")
@XmlAccessorType(XmlAccessType.FIELD)
public class Nnxml implements Serializable {

    @XmlElement(name = "info_request")
    private InfoRequest request;
}
子类的注释是可选的

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "info_request", propOrder = {
        "vendorId",
        "authCode"
})
class InfoRequest implements Serializable{
    @XmlElement(name = "vendor_id")
    private String vendorId;

    @XmlElement(name = "vendor_authcode")
    private String authCode;
}
输出为

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<nnxml>
    <info_request>
        <vendor_id>vendor id</vendor_id>
        <vendor_authcode>auth code</vendor_authcode>
    </info_request>
</nnxml>

厂商标识
认证码

如果您找到了其他解决方案,请告诉我