簡體   English   中英

使用JAXB將xml轉換為java對象

[英]convert xml to java object using JAXB

我有以下XML,並希望將其轉換為Java對象。

<?xml version="1.0" encoding="UTF-8"?>
<datasources xmlns="http://www.jboss.org/ironjacamar/schema"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.jboss.org/ironjacamar/schema http://docs.jboss.org/ironjacamar/schema/datasources_1_0.xsd">
<datasource jndi-name="java:jboss/datasources/FDMS_DemoDS" pool-name="FDMS_DemoDS">
      <connection-url>jdbc:mysql://localhost:3306/demo?zeroDateTimeBehavior=convertToNull</connection-url>
      <driver>com.mysql</driver>
      <pool>
          <max-pool-size>60</max-pool-size>
      </pool>
      <security>
          <user-name>fduser</user-name>
          <password>fdms!</password>
      </security>
  </datasource>
</datasources>

我不確定使用JAXB轉換時對應的java類是什么。

到目前為止,根據我的理解,我已經嘗試過:

 @XmlRootElement
public class Datasources {

    String connectionUrl;
    String maxPoolSize;
    String driver;

    public String getConnectionUrl() {
        return connectionUrl;
    }

    @XmlElement
    public void setConnectionUrl(String connectionUrl) {
        this.connectionUrl = connectionUrl;
    }

    public String getMaxPoolSize() {
        return maxPoolSize;
    }

    @XmlElement
    public void setMaxPoolSize(String maxPoolSize) {
        this.maxPoolSize = maxPoolSize;
    }

    public String getDriver() {
        return driver;
    }

    @XmlElement
    public void setDriver(String driver) {
        this.driver = driver;
    }
}

這是帶有JAXB批注的Java類。 這不是100%准確,但可能會對您有所幫助。

數據源

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
   "datasource"
})
public class Datasources {

    @XmlElement(name = "datasource")
    private List<Datasource> datasources;

    public List<Datasource> getDatasources() {
        if (datasource == null) {
            datasources = new ArrayList<Datasource>();
        }
        return datasources
    }
}

數據源

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
   "connection-url",
   "driver",
   "pool",
   "security"
})
public class Datasource {

    @XmlElement(name = "connection-url")
    private String connectionUrl;
    @XmlElement(name = "driver")
    private String driver;
    @XmlElement(name = "pool")
    private Pool pool;
    @XmlElement(name = "security")
    private Security security;

    public String getConnectionUrl() {
        return connectionUrl;
    }

    public void setConnectionUrl(String value) {
        this.connectionUrl = value;
    }

    public String getDriver() {
        return driver;
    }

    public void setDriver(String value) {
        this.driver = value;
    }

    public Pool getPool() {
        return pool;
    }

    public void setPool(Pool value) {
        this.pool = value;
    }

    public Security getSecurity() {
        return security;
    }

    public void setSecurity(Security value) {
        this.security = value;
    }
}

Pool.java

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
   "max-pool-size"
})
public class Pool {
    @XmlElement(name = "max-pool-size")
    private String maxPoolSize;

    public String getMaxPoolSize() {
        return maxPoolSize;
    }

    public void setMaxPoolSize(String value) {
        this.maxPoolSize = value;
    }
}

安全性

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
   "user-name",
   "password"
})
public class Security {
    @XmlElement(name = "user-name")
    private String username;
    @XmlElement(name = "password")
    private String password;

    public String getUsername() {
        return username;
    }

    public void setUsername(String value) {
        this.username = value;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String value) {
        this.password = value;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM