论坛首页 Java企业应用论坛

请介绍一个xml,bean互转

浏览 10037 次
精华帖 (0) :: 良好帖 (2) :: 新手帖 (0) :: 隐藏帖 (4)
作者 正文
   发表时间:2011-08-19  

有基本的xml与bean互转功能,

性能要好; 听过xStream性能差

使用简单,不用额外定义dtd或xsd

各位用过好的给推荐一个吧

   发表时间:2011-08-19  
jaxb倒是挺简单的,性能怎么样就不知道了
0 请登录后投票
   发表时间:2011-08-19  
jibx性能好  比stream难用
0 请登录后投票
   发表时间:2011-08-19  
JAXB很不错,就是不直接支持MAP
0 请登录后投票
   发表时间:2011-08-19  
我觉得推荐不如楼主自己去试。

在没有任何论证的过程下直接采纳别人的结果是不是和听信谣言没有什么区别呢?
0 请登录后投票
   发表时间:2011-08-19  
推荐jaxb,可以满足LZ的需求
0 请登录后投票
   发表时间:2011-08-19  

详细内容请参考这里(这是一个更复杂一点的例子,HashMap类型互转,其中就有你需要的bean互转部分):http://www.chinasb.org/archives/2011/04/1556.shtml

 

package cn.com.farben.cms.app.stockline.util.adapter;

import java.io.File;
import java.util.LinkedHashMap;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

import cn.com.farben.cms.app.stockline.vo.StockLineVO;
import cn.com.farben.cms.app.stockline.vo.StockVO;

public class Test {

	public static void main(String[] args) throws JAXBException {
		JAXBContext jaxbContext = JAXBContext.newInstance(StockLineVO.class);
		StockLineVO stockLineVO = new StockLineVO();
		stockLineVO.setStockName("新华制药");
		stockLineVO.setStockCode("000756");
		LinkedHashMap<String, StockVO> stockLinkedHashMap = new LinkedHashMap<String, StockVO>();
		stockLinkedHashMap.put("2007010225", new StockVO("2007010225","10.0","10.1","10.2","10.3","10.4","10.5"));
		stockLinkedHashMap.put("2007010226", new StockVO("2007010226","10.0","10.1","10.2","10.3","10.4","10.5"));
		stockLinkedHashMap.put("2007010224", new StockVO("2007010226","10.0","10.1","10.2","10.3","10.4","10.5"));
		stockLineVO.setStockLinkedHashMap(stockLinkedHashMap);
		Marshaller marshaller = jaxbContext.createMarshaller();
		marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

		// Output the generated XML:
		marshaller.marshal(stockLineVO, System.out);

		// Save the output to a foo.xml
		File xmlFile = new File("d:\\stock.xml");
		marshaller.marshal(stockLineVO, xmlFile);

		// Restore the Foo class from xml file
		Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
		StockLineVO _stockLineVO = (StockLineVO) unmarshaller.unmarshal(xmlFile);

		// See the result
		System.out.println(_stockLineVO.getStockLinkedHashMap().get("2007010224").getDate());

	}
}
 
0 请登录后投票
   发表时间:2011-08-20  
F.U.C.K 写道

详细内容请参考这里(这是一个更复杂一点的例子,HashMap类型互转,其中就有你需要的bean互转部分):http://www.chinasb.org/archives/2011/04/1556.shtml

 

 

package cn.com.farben.cms.app.stockline.util.adapter;

import java.io.File;
import java.util.LinkedHashMap;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

import cn.com.farben.cms.app.stockline.vo.StockLineVO;
import cn.com.farben.cms.app.stockline.vo.StockVO;

public class Test {

	public static void main(String[] args) throws JAXBException {
		JAXBContext jaxbContext = JAXBContext.newInstance(StockLineVO.class);
		StockLineVO stockLineVO = new StockLineVO();
		stockLineVO.setStockName("新华制药");
		stockLineVO.setStockCode("000756");
		LinkedHashMap<String, StockVO> stockLinkedHashMap = new LinkedHashMap<String, StockVO>();
		stockLinkedHashMap.put("2007010225", new StockVO("2007010225","10.0","10.1","10.2","10.3","10.4","10.5"));
		stockLinkedHashMap.put("2007010226", new StockVO("2007010226","10.0","10.1","10.2","10.3","10.4","10.5"));
		stockLinkedHashMap.put("2007010224", new StockVO("2007010226","10.0","10.1","10.2","10.3","10.4","10.5"));
		stockLineVO.setStockLinkedHashMap(stockLinkedHashMap);
		Marshaller marshaller = jaxbContext.createMarshaller();
		marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

		// Output the generated XML:
		marshaller.marshal(stockLineVO, System.out);

		// Save the output to a foo.xml
		File xmlFile = new File("d:\\stock.xml");
		marshaller.marshal(stockLineVO, xmlFile);

		// Restore the Foo class from xml file
		Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
		StockLineVO _stockLineVO = (StockLineVO) unmarshaller.unmarshal(xmlFile);

		// See the result
		System.out.println(_stockLineVO.getStockLinkedHashMap().get("2007010224").getDate());

	}
}
  最近用了xstream 性能确实不咋滴,试试这个先
0 请登录后投票
   发表时间:2011-08-20  
kamuikyo 写道

有基本的xml与bean互转功能,

性能要好; 听过xStream性能差

使用简单,不用额外定义dtd或xsd

各位用过好的给推荐一个吧

看看这个是否能够满足你的要求:

 

http://bbossgroups.group.iteye.com/group/wiki/3099-bboss-objectxml-serializable

0 请登录后投票
   发表时间:2011-08-20  
试试xblink吧
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics