Search code examples
javajaxbpojo

Pojo Class (XML to Object )


i am trying creating POJO classes for following XML , rest is fine but i am not able to get values of parameter tag i.e valueB , valueC.

i have created Step , Input and Parameter pojo classes for below xml out of which parameter class code is mentioned below .

Below is the XML :

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE step SYSTEM "step.dtd">
<step>
    <class>Step</class>
    <description> test </description>
    <input>
        <parameter name="A" overwrite="yes"/>
        <parameter name="B" overwrite="yes">valueB</parameter>
        <parameter name="C" overwrite="yes">valueC</parameter>      
</input>
</step>

Pojo Class :

public class Parameter
{
    private String name;
    private String parameter; 

    private String content;

    public String getContent ()
    {
        return content;
    }

    public String setContent ()
    {
        return content;
    }



    private String overwrite;
    @XmlAttribute 
    public String getName ()
    {
        return name;
    }

    public void setName (String name)
    {
        this.name = name;
    }

    public String getOverwrite ()
    {
        return overwrite;
    }

    public void setOverwrite (String overwrite)
    {
        this.overwrite = overwrite;
    }

    @Override
    public String toString()
    {
        return "ClassPojo [content = "+content+",name = "+name+", overwrite = "+overwrite+", parameter="+parameter+"]";
    }
}

Input Class :

public class Input
{
    private Parameter[] parameter;

    public Parameter[] getParameter ()
    {
        return parameter;
    }

    public void setParameter (Parameter[] parameter)
    {
        this.parameter = parameter;
    }



    @Override
    public String toString()
    {
        return "ClassPojo [parameter = "+parameter+"]";
    }
}

Step Class :

@XmlRootElement(name="step")
public class Step
{
    private Input input;

    private String description;

    private String class1;

    private Output output;

    public Input getInput ()
    {
        return input;
    }

    public void setInput (Input input)
    {
        this.input = input;
    }

    public String getDescription ()
    {
        return description;
    }

    public void setDescription (String description)
    {
        this.description = description;
    }

    public String getClass1 ()
    {
        return class1;
    }

    public void setClass (String class1)
    {
        this.class1 = class1;
    }

    public Output getOutput ()
    {
        return output;
    }

    public void setOutput (Output output)
    {
        this.output = output;
    }

    @Override
    public String toString()
    {
        return "ClassPojo [input = "+input+", description = "+description+", class = "+class1+", output = "+output+"]";
    }
}

Solution

  • Add @XmlValue to your content String in your parameter class.

    You'll also have to add @XmlAttribute to your getOverwrite() method for it to works.