Как получить атрибут xml с помощью JAXB

это мой xml:

<?xml version="1.0" encoding="UTF-8" ?>
    <organization>
      <bank>
        <description>aaa</description>
        <externalkey>123</externalkey>
        <property name="pName" value="1234567890" />
      </bank>
   </organization>

Я использовал JAXB и unmarshall для этого xml, и я могу получить описание и внешний ключ. Но я не могу получить имя свойства со значением.

  • Это мой класс Java для unmarshall:

    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());
    
  • Организация.java

    @XmlRootElement
    public class Organization {
    Bank bank = new Bank();
    
    public Bank getBank() {
      return bank;
    }
    
    public void setBank(Bank bank) {
     this.bank = bank;
    }
    }
    
  • Банк.java

    @XmlRootElement
    public class Bank {
     private String description;
     private String externalkey;
     private String property;
    
    //..GETTER and SETTER
    }
    

    Как я могу получить имя свойства и значение? Спасибо


person kamal    schedule 21.02.2013    source источник
comment
показать свой класс организации   -  person BobTheBuilder    schedule 21.02.2013


Ответы (1)


Банк

Вам нужно изменить свойство property с String на объект домена.

@XmlAccessorType(XmlAccessType.FIELD)
public class Bank {
    private String description;
    private String externalkey;
    private Property property;
}

Свойство

Тогда ваш объект Property будет выглядеть примерно так:

@XmlAccessorType(XmlAccessType.FIELD)
public class Property {

    @XmlAttribute
    private String name;

    @XmlAtrribute
    private String value;

}
person bdoughan    schedule 21.02.2013
comment
Я могу получить имя и значение свойства, используя org.getBank().getProperty().getName(). Как я могу получить такое значение реквизита: org.getBank().getProperty().getValue(pName) - person kamal; 21.02.2013
comment
@kamal - Вы ищете недвижимость, соответствующую java.util.Map? - person bdoughan; 21.02.2013
comment
да. Как это сделать? у тебя есть предложения? - person kamal; 21.02.2013
comment
Я жду. Спасибо за внимание - person kamal; 21.02.2013
comment
@kamal. Следующая статья поможет вам начать сопоставление с картой: blog.bdoughan.com/2010/07/xmladapter-jaxbs-secret-weapon.html - person bdoughan; 21.02.2013