Java Jaxb能自动映射对象吗?
我有一个这样的xml结构Java Jaxb能自动映射对象吗?,java,xml,jaxb,Java,Xml,Jaxb,我有一个这样的xml结构 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <!DOCTYPE xml> <nesProfiles> <group> <baseIpAddress>10.241.1.1</baseIpAddress> <endIpAddress>10.241.1.125</endIpAddr
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE xml>
<nesProfiles>
<group>
<baseIpAddress>10.241.1.1</baseIpAddress>
<endIpAddress>10.241.1.125</endIpAddress>
<profileName>VCX</profileName>
</group>
<group>
<baseIpAddress>10.241.1.126</baseIpAddress>
<endIpAddress>10.241.2.250</endIpAddress>
<profileName>GT</profileName>
</group>
<properties>
<profileName>GT</profileName>
<serialNumberPrefix>GtSN</serialNumberPrefix>
<firmwareVersion>GtFW</firmwareVersion>
<hardwareType>GtHW</hardwareType>
<productName>GtPN</productName>
<portNumber>6</portNumber>
<portBaseName>Port</portBaseName>
<assembly>GtA</assembly>
</properties>
<properties>
<profileName>VCX</profileName>
<serialNumberPrefix>VcxSN</serialNumberPrefix>
<firmwareVersion>VcxFW</firmwareVersion>
<hardwareType>VcxHW</hardwareType>
<productName>VcxPN</productName>
<portNumber>7</portNumber>
<portBaseName>Port</portBaseName>
<assembly>VcxA</assembly>
</properties>
</nesProfiles>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE xml>
<nesProfiles>
<group>
<baseIpAddress>10.241.1.1</baseIpAddress>
<endIpAddress>10.241.1.125</endIpAddress>
<properties>VCX</properties>
</group>
<group>
<baseIpAddress>10.241.1.126</baseIpAddress>
<endIpAddress>10.241.2.250</endIpAddress>
<properties>GT</properties>
</group>
<properties>
<profileName>GT</profileName>
<serialNumberPrefix>GtSN</serialNumberPrefix>
<firmwareVersion>GtFW</firmwareVersion>
<hardwareType>GtHW</hardwareType>
<productName>GtPN</productName>
<portNumber>6</portNumber>
<portBaseName>Port</portBaseName>
<assembly>GtA</assembly>
</properties>
<properties>
<profileName>VCX</profileName>
<serialNumberPrefix>VcxSN</serialNumberPrefix>
<firmwareVersion>VcxFW</firmwareVersion>
<hardwareType>VcxHW</hardwareType>
<productName>VcxPN</productName>
<portNumber>7</portNumber>
<portBaseName>Port</portBaseName>
<assembly>VcxA</assembly>
</properties>
</nesProfiles>
你可以用/来解决这个问题。比如:
public class NesGroup {
private String baseIpAddress;
private String endIpAddress;
private String profileName;
@XmlIDREF
private NesProperties nesProperties;
}
以及:
另见
@XmlRootElement( name = "nesProfiles" )
@XmlAccessorType( XmlAccessType.FIELD )
public class NesProfiles {
@XmlElement( name = "properties" )
private List<NesProperties> profiles = new ArrayList<NesProperties>();
@XmlElement( name = "group" )
private List<NesGroup> groups = new ArrayList<NesGroup>();
}
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE xml>
<nesProfiles>
<group>
<baseIpAddress>10.241.1.1</baseIpAddress>
<endIpAddress>10.241.1.125</endIpAddress>
<properties>VCX</properties>
</group>
<group>
<baseIpAddress>10.241.1.126</baseIpAddress>
<endIpAddress>10.241.2.250</endIpAddress>
<properties>GT</properties>
</group>
<properties>
<profileName>GT</profileName>
<serialNumberPrefix>GtSN</serialNumberPrefix>
<firmwareVersion>GtFW</firmwareVersion>
<hardwareType>GtHW</hardwareType>
<productName>GtPN</productName>
<portNumber>6</portNumber>
<portBaseName>Port</portBaseName>
<assembly>GtA</assembly>
</properties>
<properties>
<profileName>VCX</profileName>
<serialNumberPrefix>VcxSN</serialNumberPrefix>
<firmwareVersion>VcxFW</firmwareVersion>
<hardwareType>VcxHW</hardwareType>
<productName>VcxPN</productName>
<portNumber>7</portNumber>
<portBaseName>Port</portBaseName>
<assembly>VcxA</assembly>
</properties>
</nesProfiles>
@XmlRootElement( name = "group" )
@XmlAccessorType( XmlAccessType.FIELD )
public class NesGroup {
private String baseIpAddress;
private String endIpAddress;
private String profileName;
private NesProperties nesProperties;
}
public class NesGroup {
private String baseIpAddress;
private String endIpAddress;
private String profileName;
@XmlIDREF
private NesProperties nesProperties;
}
public class NesProperties {
@XmlID
private String profileName;
private String serialNumberPrefix;
private String firmwareVersion;
private String hardwareType;
private String productName;
private String portBaseName;
private String assembly;
private int portNumber;
}