如何使用JAXB获取XML属性

6

这是我的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,可以获取到description和externalkey。但是我无法获取带有值的属性名称。

  • This is my java class for 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());
    
  • Organization.java

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

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

    How can I get property name and value? Thank u


1
展示你的Organization类。 - BobTheBuilder
1个回答

10

银行

您需要将 property 属性从一个 String 类型更改为域对象。

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

属性

那么您的属性对象可能看起来像这样:

@XmlAccessorType(XmlAccessType.FIELD)
public class Property {

    @XmlAttribute
    private String name;

    @XmlAtrribute
    private String value;

}

我可以使用org.getBank().getProperty().getName()获取属性名称和值。如何像这样获取属性值:org.getBank().getProperty().getValue("pName")? - kamal
@kamal - 你是在寻找与java.util.Map相对应的属性吗? - bdoughan
是的。怎么做呢?你有什么建议吗? - kamal
我在等待。谢谢您的关注。 - kamal
@kamal - 以下文章将帮助您开始映射到Map:http://blog.bdoughan.com/2010/07/xmladapter-jaxbs-secret-weapon.html - bdoughan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接