Creating an XML with attributes and dynamic values using JAXB

Rahpbqltxq

New Member
I want to Create an XML using JAXB. It should have attributes in it whose values have to come from a property defined in corresponding class.The current output is giving a property as a child tag, and not as an attribute in the main tag.The Structure of my desired XML is as follows.\[code\]<?xml version="1.0" encoding="UTF-8"?><company> <department name="hr"> <branch name="hr-recruitment"> <manager> Manasa </manager> <phone>992222222</phone> <salary> 20000 </salary> </branch> <branch name="hr-finance"> <manager> Sunder </manager> <phone>993333332</phone> <salary> 50000 </salary> </branch> </department> <department name="transport"> <branch name="transport-employee"> <manager> Raman </manager> <phone>888888888</phone> <salary> 30000 </salary> </branch> <branch name="transport-goods"> <manager> Sheela </manager> <phone>99999999</phone> <salary> 75000 </salary> </branch> </department></company> \[/code\]Here are the 3 classes marked with the JAXB annotations:1) company.class\[code\]@XmlRootElement(name = "tarang")public class Company { private List<Department> listDepartments; public Company(List<Department> listDepartments) { this.listDepartments = listDepartments; } public Company() { } @XmlElementRef public List<Department> getListDepartments() { return listDepartments; } public void setListDepartments(ArrayList<Department> listDepartments) { this.listDepartments = listDepartments; }}\[/code\]2) Department.class\[code\]@XmlRootElement(name = "department")public class Department { private String strDepartmentName; private List<Branch> listBranchs; public Department(String strDepartmentName, List<Branch> listBranchs) { this.strDepartmentName = strDepartmentName; this.listBranchs = listBranchs; } public Department() { } @XmlElement(name = "name") public String getStrDepartmentName() { return strDepartmentName; } public void setStrDepartmentName(String strDepartmentName) { this.strDepartmentName = strDepartmentName; } @XmlElementRef public List<Branch> getListBranchs() { return listBranchs; } public void setListBranchs(List<Branch> listBranchs) { this.listBranchs = listBranchs; }}\[/code\]3) Branch.class\[code\]@XmlRootElement(name = "branch")public class Branch { private String strName; private String strManagerName; private String strPhone; private int intSalary; public Branch(String strName, String strManagerName, String strPhone, int intSalary) { this.strName = strName; this.strManagerName = strManagerName; this.strPhone = strPhone; this.intSalary = intSalary; } public Branch() { // TODO Auto-generated constructor stub } @XmlElement(name = "name") public String getStrName() { return strName; } public void setStrName(String strName) { this.strName = strName; } @XmlElement(name = "manager") public String getStrManagerName() { return strManagerName; } public void setStrManagerName(String strManagerName) { this.strManagerName = strManagerName; } @XmlElement(name = "phone") public String getStrPhone() { return strPhone; } public void setStrPhone(String strPhone) { this.strPhone = strPhone; } @XmlElement(name = "salary") public int getIntSalary() { return intSalary; } public void setIntSalary(int intSalary) { this.intSalary = intSalary; }}\[/code\]My current design contains 3 classes.1) Company 2) Department 3) BranchThe relations are:\[code\]1) class Company -has a- List of Departments.2) class Department -has a- name (String).3) class Department -has a- List of Branches.4) class Branch -has a- name (String)5) class Branch -has a- manager (String)6) class Branch -has a- phone (String)7) class Branch -has a- salary (String)\[/code\]The current Output is:\[code\] <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <tarang> <department> <branch> <salary>50000</salary> <manager>Manasa</manager> <name>hr-recruitment</name> <phone>999999999</phone> </branch> <branch> <salary>40000</salary> <manager>Sundar</manager> <name>hr-finance</name> <phone>888888888</phone> </branch> <name>hr</name> </department> <department> <branch> <salary>30000</salary> <manager>Raman</manager> <name>transport-employee</name> <phone>7777777777</phone> </branch> <branch> <salary>20000</salary> <manager>Sheela</manager> <name>transport-goods</name> <phone>6666666666</phone> </branch> <name>tranport</name> </department> </tarang>\[/code\]The name of the department, and name of the branch is not getting appended as a attribute.Please suggest me the corrections in the classes, where the \[code\]@xmlattribute\[/code\] annotation has to be applied for me to get the desired output.
 
Back
Top