Демаршалинг XML (JAXB)
Добрый вечер, подскажите пож как распарсить XML с помощью JAXB.
Исходный XML:
<exchangerates>
<row>
<exchangerate ccy="UAH" base_ccy="RUR" buy="0.00" sale="0.00"/>
</row>
<row>
<exchangerate ccy="EUR" base_ccy="RUR" buy="0.00" sale="0.00"/>
</row>
<row>
<exchangerate ccy="USD" base_ccy="RUR" buy="0.00" sale="0.00"/>
</row>
</exchangerates>
Так делаю класс-сущность для XML
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType
@XmlRootElement(name = "exchangerates")
public class PbXmlEntity {
@XmlElementWrapper(name = "row")
@XmlElement(name = "exchangerate")
public List<PbXmlEntity> row;
@XmlAttribute (name = "ccy")
private String ccy;
public String getCcy() {
return ccy;
}
public void setCcy(String ccy) {
this.ccy = ccy;
}
@XmlAttribute
private String base_ccy;
public String getBase_ccy() {
return base_ccy;
}
public void setBase_ccy(String base_ccy) {
this.base_ccy = base_ccy;
}
@XmlAttribute (name = "buy")
private double buy;
public double getBuy() {
return buy;
}
public void setBuy(double buy) {
this.buy = buy;
}
@XmlAttribute (name = "sale")
private double sale;
public double getSale() {
return sale;
}
public void setSale(double sale) {
this.sale = sale;
}
}
Листинг класса-обработчика :
public class PbJaxb {
public static void main(String[] args) {
try {
File xmlFile = new File("in.xml");
JAXBContext context = JAXBContext.newInstance(PbXmlEntity.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
PbXmlEntity unmarshal = (PbXmlEntity) unmarshaller.unmarshal(xmlFile);
System.out.println("ccy:"+unmarshal.getCcy());
System.out.println("Base_ccy:"+unmarshal.getBase_ccy());
System.out.println("buy:"+unmarshal.getBuy());
System.out.println("sale:"+unmarshal.getSale());
} catch (JAXBException ex) {}
}
}
В итоге получаю :
ccy:null Base_ccy:null buy:0.0 sale:0.0
как правильно добраться до атрибутов тега в этом случае?