1.xml转javabean
1.1 xml格式如下,只有一层的:

<?xml version='1.0' encoding='UTF-8'?>
<root>
<company>10000</company>
<descr>公司</descr>
<descrshort>公司简称</descrshort>
<country>国家</country>
<phone>电话</phone>
<fax>传真</fax>
<address_code>邮编</address_code>
<address_descr>注册地址</address_descr>
<spg_legal>公司法人</spg_legal>
<comemail>邮箱</comemail>
</root>

在实体类名上加注释:

@XmlRootElement(name = “root”)
在这里插入图片描述

调用:

MdmCorpVoList tmpRresvo = (MdmCorpVoList)getXmlUtil().convertXmlStrToObject(MdmCorpVoList.class, xml);
javax.xml.bind.JAXBContext
javax.xml.bind.Unmarshaller

/** 
  * 将String类型的xml转换成对象 
  */  
public  Object convertXmlStrToObject(Class clazz, String xmlStr) {  
     Object xmlObject = null;  
     try {  
         JAXBContext context = JAXBContext.newInstance(clazz);  
         // 进行将Xml转成对象的核心接口  
         Unmarshaller unmarshaller = context.createUnmarshaller();  
         StringReader sr = new StringReader(xmlStr);  
         xmlObject = unmarshaller.unmarshal(sr);  
         
     } catch (JAXBException e) {  
         e.printStackTrace();  
     }  
     return xmlObject;  
}

1.2有两层的xml,
如下:

<?xml version='1.0' encoding='UTF-8'?>
<root>
<line>
<company>10000</company>
<descr>公司</descr>
<descrshort>公司简称</descrshort>
<country>国家</country>
<phone>电话</phone>
<fax>传真</fax>
<address_code>邮编</address_code>
<address_descr>注册地址</address_descr>
<spg_legal>公司法人</spg_legal>
<comemail>邮箱</comemail>
</line>
</root>

1.2.1建立两个vo类:
第一个:

@XmlAccessorType(XmlAccessType.FIELD)
public class MdmCorpVo {
实体属性
get
set方法
}

第二个:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "root")
@XmlType(propOrder = {})
public class MdmCorpVoList {
 
	@XmlElement(name = "line")
	private List<MdmCorpVo> listCorpVo;
 
	public List<MdmCorpVo> getListCorpVo() {
		return listCorpVo;
	}
 
	public void setListCorpVo(List<MdmCorpVo> listCorpVo) {
		this.listCorpVo = listCorpVo;
	}
	
	
}

再使用方法1.1中的调用就好了,注意这个转化只能xml和vo一一对应

2.vo转xml
xml格式如下:也有两层:

<?xml version='1.0' encoding='UTF-8'?>
<root>
<head>
<success>1</success>
<errcode></errcode>
<message></message>
</head>
</root>

实体类1:

@javax.xml.bind.annotation.XmlRootElement(name="root")
public class ReturnMdmVo {
 
	private  String success;
	
	private  String errcode;
	
	private  String message;
//get方法
//set方法
}

实体类2:

@XmlRootElement(name="root")
public class ReturnMdmVoList {
 
	private List<ReturnMdmVo>  returnMdmVolist;
 
//	@XmlElementWrapper(name = "head")
	@XmlElement(name = "head")
	public List<ReturnMdmVo> getReturnMdmVolist() {
		return returnMdmVolist;
	}
 
 
	public void setReturnMdmVolist(List<ReturnMdmVo> returnMdmVolist) {
		this.returnMdmVolist = returnMdmVolist;
	}
	
}

调用:

ReturnMdmVoList listVo=new ReturnMdmVoList();
List<ReturnMdmVo>  returnMdmVolist=new ArrayList<ReturnMdmVo>();
returnMdmVolist.add(resVo);
listVo.setReturnMdmVolist(returnMdmVolist);
String result=getXmlUtil().convertToXml(listVo);
/** 
  * 将对象直接转换成String类型的 XML输出 
  *  
  * @param obj 
  * @return 
  */  
public  String convertToXml(Object obj) {  
     // 创建输出流  
     StringWriter sw = new StringWriter();  
     try {  
         // 利用jdk中自带的转换类实现  
         JAXBContext context = JAXBContext.newInstance(obj.getClass());  

         Marshaller marshaller = context.createMarshaller();  
         // 格式化xml输出的格式  
         marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,  
                 Boolean.TRUE);  
         // 将对象转换成输出流形式的xml  
         marshaller.marshal(obj, sw);  
     } catch (JAXBException e) {  
         e.printStackTrace();  
     }  
     return sw.toString().replace("standalone=\"yes\"", "");  
} 

原文:https://blog.csdn.net/qq_31968809/article/details/85860099

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐