Jaxb --->Java Architecture for Xml binding
1.java to xml
UserManager.java代码如下
package dao;
public class UserManager {
public UserManager(String manaName,String manaId,String manaDep)
{
this.manaName = manaName;
this.manaId = manaId;
this.manaDep = manaDep;
}
public UserManager()
{
}
private String manaName;
public String getManaName() {
return manaName;
}
public void setManaName(String manaName) {
this.manaName = manaName;
}
public String getManaId() {
return manaId;
}
public void setManaId(String manaId) {
this.manaId = manaId;
}
public String getManaDep() {
return manaDep;
}
public void setManaDep(String manaDep) {
this.manaDep = manaDep;
}
private String manaId;
private String manaDep;
}
package dao;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name="userDao",namespace="dao.userDao")
//@XmlAccessorType(XmlAccessType.FIELD)
public class UserDao {
public UserDao()
{}
public UserDao(String userName,String password,UserManager um)
{
this.userName = userName;
this.password = password;
this.um = um;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
//@XmlAttribute(name="userName")
private String userName;
//@XmlAttribute(name="password")
private String password;
// @XmlElements(
// {
// @XmlElement(name="manaName",type=String.class),
// @XmlElement(name="manaId",type=String.class),
// @XmlElement(name="manaDep",type=String.class)
// }
// )
private UserManager um;
public UserManager getUm() {
return um;
}
public void setUm(UserManager um) {
this.um = um;
}
@Override
public String toString()
{
return "userName="+getUserName()+"&password="+getPassword()+
"&userManager:manaName="+getUm().getManaName()+"&userManager:manaId="+getUm().getManaId()+
"&userManager:manaDep="+getUm().getManaDep();
}
}
//service接口
import javax.xml.bind.JAXBException;
public interface Java_Xml_ConvertorService
{
public Object Xml_To_Java(String filePath) throws JAXBException;
public <T> void Java_To_Xml(T javaObject) throws JAXBException;
}
package service.impl;
import java.io.OutputStreamWriter;
import java.io.StringReader;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import dao.UserDao;
import dao.UserManager;
import service.Java_Xml_ConvertorService;
public class Java_Xml_ConvertorServiceImpl implements Java_Xml_ConvertorService {
public static void main(String[] args) throws JAXBException {
UserManager um = new UserManager("junjunwan","0001","QA");
Java_Xml_ConvertorServiceImpl jxcsi = new Java_Xml_ConvertorServiceImpl();
jxcsi.Java_To_Xml(new UserDao("wuwh","ganbare",um));
UserDao ud = (UserDao)jxcsi.Xml_To_Java("");
System.out.println(ud.toString());
}
@Override
public Object Xml_To_Java(String xmlPath) throws JAXBException {
String xml = "<?xml version='1.0' encoding='UTF-8' standalone='yes'?>"
+"<ns2:userDao xmlns:ns2='dao.userDao'>"
+" <userName>wuwh</userName>"
+"<password>ganbare</password>"
+"<um>"
+" <manaDep>QA</manaDep>"
+"<manaId>0001</manaId>"
+"<manaName>junjunwan</manaName>"
+"</um>"
+"</ns2:userDao>";
JAXBContext ctx = JAXBContext.newInstance(UserDao.class);
Unmarshaller um = ctx.createUnmarshaller();
UserDao ud = (UserDao) um.unmarshal(new StringReader(xml));
return ud;
}
@Override
public <T> void Java_To_Xml(T javaObject) throws JAXBException {
JAXBContext ctx = JAXBContext.newInstance(javaObject.getClass());
Marshaller marshaller = ctx.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, false);
OutputStreamWriter opsw = new OutputStreamWriter(System.out);
marshaller.marshal(javaObject, opsw);
}
}