Friday 15 June 2012

java - Deserializing XML file without converting xml file -



java - Deserializing XML file without converting xml file -

the below xml generated scheme needs converted java application object of type employee.

<?xml version="1.0" encoding="utf-8"?> <employee xmlns:i="http://www.w3.org/2001/xmlschema-instance"> <designation>executive</designation> <name>praveen kumar</name> <salary>90000</salary> <bankaccount>10111</bankaccount> </employee>

how deserialize above xml using xmldecoder's readobject method without converting xml file generated system?

here how can handle utilize case:

java model

the next class used answer:

package forum26609152; public class employee { private string designation; private string name; private int salary; private string bankaccount; public string getdesignation() { homecoming designation; } public void setdesignation(string designation) { this.designation = designation; } public string getname() { homecoming name; } public void setname(string name) { this.name = name; } public int getsalary() { homecoming salary; } public void setsalary(int salary) { this.salary = salary; } public string getbankaccount() { homecoming bankaccount; } public void setbankaccount(string bankaccount) { this.bankaccount = bankaccount; } } xmlencoder/xmldecoder

below xml xmlencoder/xmldecoder expecting work with. different xml in question. xmlencoder/xmldecoder not fit utilize case.

<?xml version="1.0" encoding="utf-8"?> <java version="1.7.0_60" class="java.beans.xmldecoder"> <object class="forum26609152.employee"> <void property="bankaccount"> <string>10111</string> </void> <void property="designation"> <string>executive</string> </void> <void property="name"> <string>praveen kumar</string> </void> <void property="salary"> <int>90000</int> </void> </object> </java> jaxb

jaxb standard api object-to-xml binding. implementation has been included in jdk/jre since java se 6, have it.

employee

the mappings between java , xml configured via annotations. below annotations necessary map java object xml question.

import javax.xml.bind.annotation.*; @xmlrootelement(name="employee") @xmltype(proporder = {"designation", "name", "salary", "bankaccount"}) public class employee { private string designation; private string name; private int salary; private string bankaccount; @xmlelement(name="designation") public string getdesignation() { homecoming designation; } public void setdesignation(string designation) { this.designation = designation; } @xmlelement(name="name") public string getname() { homecoming name; } public void setname(string name) { this.name = name; } @xmlelement(name="salary") public int getsalary() { homecoming salary; } public void setsalary(int salary) { this.salary = salary; } @xmlelement(name="bankaccount") public string getbankaccount() { homecoming bankaccount; } public void setbankaccount(string bankaccount) { this.bankaccount = bankaccount; } }

demo code

below code need write read xml object form, , output xml.

import javax.xml.bind.*; import java.io.file; public class jaxbdemo { public static void main(string[] args) throws exception { jaxbcontext jc = jaxbcontext.newinstance(employee.class); unmarshaller unmarshaller = jc.createunmarshaller(); file xml = new file("input.xml"); employee employee = (employee) unmarshaller.unmarshal(xml); marshaller marshaller = jc.createmarshaller(); marshaller.setproperty(marshaller.jaxb_formatted_output, true); marshaller.marshal(employee, system.out); } }

input.xml/output

as can see xml question:

<?xml version="1.0" encoding="utf-8" standalone="yes"?> <employee> <designation>executive</designation> <name>praveen kumar</name> <salary>90000</salary> <bankaccount>10111</bankaccount> </employee>

java xml serialization

No comments:

Post a Comment