【问题标题】:How to get xml attribute using JAXB如何使用 JAXB 获取 xml 属性
【发布时间】:2013-02-06 15:34:06
【问题描述】:

这是我的 xml:

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

我为这个 xml 使用了 JAXB 和 unmarshall,我可以得到描述和 externalkey。但我无法获取具有值的属性名称。

  • 这是我用于解组的 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());
    
  • 组织.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
    }
    

    如何获取属性名称和值?谢谢你

【问题讨论】:

  • 显示您的组织类

标签: java xml-parsing jaxb


【解决方案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;

}

【讨论】:

  • 我可以使用 org.getBank().getProperty().getName() 获取属性名称和值。我怎样才能获得这样的道具价值:org.getBank().getProperty().getValue("pName")
  • @kamal - 您正在寻找与 java.util.Map 对应的属性?
  • 是的。怎么做?你有什么建议吗?
  • 我在等。感谢您的关注
  • @kamal - 以下文章将帮助您映射到 Map:blog.bdoughan.com/2010/07/xmladapter-jaxbs-secret-weapon.html
猜你喜欢
  • 2015-09-01
  • 1970-01-01
  • 2011-09-11
  • 2021-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-30
  • 1970-01-01
相关资源
最近更新 更多