如何使用JAXB获取xml属性

kam*_*mal 5 java jaxb xml-parsing

这是我的xml:

<?xml version="1.0" encoding="UTF-8" ?>
    <organization>
      <bank>
        <description>aaa</description>
        <externalkey>123</externalkey>
        <property name="pName" value="1234567890" />
      </bank>
   </organization>
Run Code Online (Sandbox Code Playgroud)

我为这个xml使用了JAXB和unmarshall,我可以得到描述和外键.但我无法获得有价值的财产名称.

  • 这是我的unmarshall java类:

    JAXBContext jb = JAXBContext.newInstance(Organization.class);
    Unmarshaller um = jb.createUnmarshaller();
    Organization org = (Organization) um.unmarshal(new File("\\upload\\bank999999.xml"));
    System.out.println(org.getBank().getDescription());
    System.out.println(org.getBank().getExternalkey());
    
    Run Code Online (Sandbox Code Playgroud)
  • Organization.java

    @XmlRootElement
    public class Organization {
    Bank bank = new Bank();
    
    public Bank getBank() {
      return bank;
    }
    
    public void setBank(Bank bank) {
     this.bank = bank;
    }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • Bank.java

    @XmlRootElement
    public class Bank {
     private String description;
     private String externalkey;
     private String property;
    
    //..GETTER and SETTER
    }
    
    Run Code Online (Sandbox Code Playgroud)

    我怎样才能获得房产名称和价值?感谢你

bdo*_*han 7

银行

您需要将property属性从a String更改为域对象.

@XmlAccessorType(XmlAccessType.FIELD)
public class Bank {
    private String description;
    private String externalkey;
    private Property property;
}
Run Code Online (Sandbox Code Playgroud)

属性

然后你的Property对象看起来像:

@XmlAccessorType(XmlAccessType.FIELD)
public class Property {

    @XmlAttribute
    private String name;

    @XmlAtrribute
    private String value;

}
Run Code Online (Sandbox Code Playgroud)