Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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 - Fatal编程技术网

Java Jaxb能自动映射对象吗?

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结构

<?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;
    }