1

I have an xml like below:

<response>
    <adminArea5 type="City">Rochester</adminArea5>
    <adminArea3 type="State">NY</adminArea3>
    <adminArea4 type="County">Monroe County</adminArea4>             
    <adminArea1 type="Country">US</adminArea1>
</response>

Java Class:

public class Response{

    private String street;

    @XmlAttribute(name = "adminArea5")
    private String city;

    @XmlAttribute(name = "adminArea3")
    private String state;

    @XmlAttribute(name = "adminArea4")
    private String county;

    @XmlAttribute(name = "adminArea1")
    private String country;
}

I am using "JAXB.unmarshal(new StringReader(xml), targetClass)" to parse xml into java object. But these fields are being null after parsing xml. Any help will be appreciated.

Aadi
  • 31
  • 1
  • create an XML file in the project, right click on the XML file and generate a schema and then generate the java classes. [Generate Java Classes from XML](https://stackoverflow.com/questions/24982321/jaxb-unmarshalling-issues-with-xml-attributes) – lucas May 06 '20 at 17:50

1 Answers1

0

Update your Java class as below

@XmlRootElement(name = "response")
@XmlAccessorType(XmlAccessType.PROPERTY)
public class Response {
    private String street;

    @XmlElement(name = "adminArea5")
    private String city;

    @XmlElement(name = "adminArea3")
    private String state;

    @XmlElement(name = "adminArea4")
    private String county;

    @XmlElement(name = "adminArea1")
    private String country;

    @Override
    public String toString() {
        return "Response{" +
                "street='" + street + '\'' +
                ", city='" + city + '\'' +
                ", state='" + state + '\'' +
                ", county='" + county + '\'' +
                ", country='" + country + '\'' +
                '}';
    }
}

also check the difference between XmlElement and XmlAttribute XML attribute vs XML element

dassum
  • 4,727
  • 2
  • 25
  • 38