Jaxb---java跟xml互相转换

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;

}


 service实现类如下: 

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);
		
	}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值