1.maven坐标
<!--对象生成xml-->
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.10</version>
</dependency>
2.生成样式
"<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<d_sqd_main>
<barcode>HQ001100967</barcode>
<bedno></bedno>
<departname>检验科</departname>
<diagnosis></diagnosis>
<docname>admin</docname>
<page>18</page>
<pagetype>岁</pagetype>
<pname>红尘雪</pname>
<pno></pno>
<psex>1</psex>
<ptype>7</ptype>
<sampletime>2021-02-25 01:19:19</sampletime>
<senddate>2021-02-25 01:19:01</senddate>
<d_sqd_ws_detail>
<desccode>00047</desccode>
<descr>刺柏</descr>
</d_sqd_ws_detail>
<d_sqd_ws_detail>
<desccode>00048</desccode>
<descr>枫叶梧桐、伦敦悬铃木</descr>
</d_sqd_ws_detail>
<d_sqd_ws_detail>
<desccode>00049</desccode>
<descr>葎草</descr>
</d_sqd_ws_detail>
</d_sqd_main>
"
3.
实体类
package com.baiyou.lisinterface.kangshengda.lis.pojo;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* 申请单信息
*/
@XmlRootElement(name="d_sqd_main")
public class RequestItem implements Serializable {
/**
* 外部系统条形码 varchar(30) 否 外部系统打印的条码
*/
private String barcode;
/**
* 病人类型 varchar(20) 否 使用代码, 1:住院;2:门诊;3:体检;4:婚检;5:科研;6:特勤;7:其他
*/
private String ptype;
/**
* 标本类型 varchar(20) 否 使用代码,详见附录
*/
private String stype;
/**
* 病人所在科室/病区 varchar(30) 使用中文名称
*/
private String departname;
/**
* 门诊号/住院号 varchar(30) 外部系统使用的病人标识号
*/
private String pno;
/**
* 病人姓名 varchar(30) 否
*/
private String pname;
/**
* 病人性别 varchar(30) 否 使用代码,1:男;2:女;3:未知
*/
private String psex;
/**
* 病人年龄
*/
private String page ;
/**
* 年龄类型
*/
private String pagetype;
/**
* 出生日期 Datetime 病人出生年月日
*/
private String birthday;
/**
* 床号 varchar(30) 住院病人尽可能提供
*/
private String bedno;
/**
* 临床诊断 varchar(30) 尽可能提供
*/
private String diagnosis ;
/**
* 送检医生 varchar(30) 尽可能提供
*/
private String docname;
/**
* 采样时间 Datetime 尽可能提供
*/
private String sampletime;
/**
* 送检时间 Datetime 否 医嘱申请时间
*/
private String senddate;
private List<RequestItemDetail> requestItemDetailList=new ArrayList<>();
public String getBirthday() {
return birthday;
}
@XmlElement(name="birthday")
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public String getSampletime() {
return sampletime;
}
@XmlElement(name="sampletime")
public void setSampletime(String sampletime) {
this.sampletime = sampletime;
}
public String getSenddate() {
return senddate;
}
@XmlElement(name="senddate")
public void setSenddate(String senddate) {
this.senddate = senddate;
}
public String getBarcode() {
return barcode;
}
@XmlElement(name="barcode")
public void setBarcode(String barcode) {
this.barcode = barcode;
}
public String getPtype() {
return ptype;
}
@XmlElement(name="ptype")
public void setPtype(String ptype) {
this.ptype = ptype;
}
public String getStype() {
return stype;
}
@XmlElement(name="stype")
public void setStype(String stype) {
this.stype = stype;
}
public String getDepartname() {
return departname;
}
@XmlElement(name="departname")
public void setDepartname(String departname) {
this.departname = departname;
}
public String getPno() {
return pno;
}
@XmlElement(name="pno")
public void setPno(String pno) {
this.pno = pno;
}
public String getPname() {
return pname;
}
@XmlElement(name="pname")
public void setPname(String pname) {
this.pname = pname;
}
public String getPsex() {
return psex;
}
@XmlElement(name="psex")
public void setPsex(String psex) {
this.psex = psex;
}
public String getPage() {
return page;
}
@XmlElement(name="page")
public void setPage(String page) {
this.page = page;
}
public String getPagetype() {
return pagetype;
}
@XmlElement(name="pagetype")
public void setPagetype(String pagetype) {
this.pagetype = pagetype;
}
public String getBedno() {
return bedno;
}
@XmlElement(name="bedno")
public void setBedno(String bedno) {
this.bedno = bedno;
}
public String getDiagnosis() {
return diagnosis;
}
@XmlElement(name="diagnosis")
public void setDiagnosis(String diagnosis) {
this.diagnosis = diagnosis;
}
public String getDocname() {
return docname;
}
@XmlElement(name="docname")
public void setDocname(String docname) {
this.docname = docname;
}
public List<RequestItemDetail> getRequestItemDetailList() {
return requestItemDetailList;
}
@XmlElement(name="d_sqd_ws_detail")
public void setRequestItemDetailList(List<RequestItemDetail> requestItemDetailList) {
this.requestItemDetailList = requestItemDetailList;
}
public RequestItem() {
}
@Override
public int hashCode() {
return super.hashCode();
}
@Override
public boolean equals(Object obj) {
return super.equals(obj);
}
}
嵌套实体类
package com.baiyou.lisinterface.kangshengda.lis.pojo;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import java.io.Serializable;
/**
* 申请单信息信息
*/
@XmlRootElement(name="d_sqd_ws_detail")
public class RequestItemDetail implements Serializable {
/**
* 检测项目编号
*/
private String desccode;
/**
* 检测项目名称
*/
private String descr;
public String getDesccode() {
return desccode;
}
@XmlElement(name = "desccode")
public void setDesccode(String desccode) {
this.desccode = desccode;
}
public String getDescr() {
return descr;
}
@XmlElement(name = "descr")
public void setDescr(String descr) {
this.descr = descr;
}
@Override
public String toString() {
return "RequestItemDetail{" +
"desccode='" + desccode + '\'' +
", descr='" + descr + '\'' +
'}';
}
public RequestItemDetail() {
super();
}
@Override
public int hashCode() {
return super.hashCode();
}
}
5.具体操作
//处理xml文件,将对象传唤成xml
RequestItem requestItem=new RequestItem();
for(int m=0;m<bizLisRequestInformations.size();m++){
if(m==bizLisRequestInformations.size()-1){
//外部系统条形码
requestItem.setBarcode(Optional.ofNullable(bizLisRequestInformations.get(m).getBarcode()).orElse(""));
//1门诊 2住院
if(bizLisRequestInformations.get(m).getPatientType() !=null && bizLisRequestInformations.get(m).getPatientType().equals("")){
if(bizLisRequestInformations.get(m).getPatientType().equals("1")){
requestItem.setPtype(2+"");
}else if(bizLisRequestInformations.get(m).getPatientType().equals("2")){
requestItem.setPtype(1+"");
}
}else{
requestItem.setPtype(7+"");
}
//样本类型
requestItem.setStype(Optional.ofNullable(bizLisRequestInformations.get(m).getSampleTypeName()).orElse(""));
//科室或者病区
requestItem.setDepartname(Optional.ofNullable( bizLisRequestInformations.get(m).getRequestDeptName()).orElse(""));
//门诊号或者住院号
requestItem.setPno(Optional.ofNullable(bizLisRequestInformations.get(m).getOutpatientId()).orElse(""));
//病人姓名
requestItem.setPname(Optional.ofNullable(bizLisRequestInformations.get(m).getPatientName()).orElse(""));
//性别
requestItem.setPsex(Optional.ofNullable(bizLisRequestInformations.get(m).getPatientSex()).orElse(""));
//年龄
requestItem.setPage(Optional.ofNullable(bizLisRequestInformations.get(m).getPatientAge()).orElse(0)+"");
//年龄类型
requestItem.setPagetype(Optional.ofNullable(bizLisRequestInformations.get(m).getPatientAgeUnit()).orElse(""));
//出生日期
if( bizLisRequestInformations.get(m).getPatientBirthday() !=null){
requestItem.setBirthday(simpleDateFormat.format(bizLisRequestInformations.get(m).getPatientBirthday()));
}
//床号
requestItem.setBedno(Optional.ofNullable(bizLisRequestInformations.get(m).getInpatientDeptCode()).orElse(""));
//诊断
requestItem.setDiagnosis(Optional.ofNullable(bizLisRequestInformations.get(m).getDiagnosticsName()).orElse(""));
//送检医师
requestItem.setDocname(Optional.ofNullable(bizLisRequestInformations.get(m).getRequestDoctName()).orElse(""));
//采样时间
if(bizLisRequestInformations.get(m).getExecuteDate() !=null){
requestItem.setSampletime(simpleDateFormat.format(bizLisRequestInformations.get(m).getExecuteDate()));
}
//送检时间
if(bizLisRequestInformations.get(m).getRequestDoctDate() !=null){
requestItem.setSenddate(simpleDateFormat.format(bizLisRequestInformations.get(m).getRequestDoctDate()));
}
}
//申请表详细信息
RequestItemDetail requestItemDetail =new RequestItemDetail();
//检测项目编号
requestItemDetail.setDesccode(Optional.ofNullable(bizLisRequestInformations.get(m).getRequestItemId()).orElse(""));
//检测项目名称
requestItemDetail.setDescr(Optional.ofNullable(bizLisRequestInformations.get(m).getRequestItemName()).orElse(""));
requestItem.getRequestItemDetailList().add(requestItemDetail);
}
//处理将对象转xml
JAXBContext context = null;
Marshaller marshaller=null;
String xmlObj="";
try {
context = JAXBContext.newInstance(RequestItem.class);
marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
//marshaller.marshal(authVO,System.out);
// 打印到控制台
ByteArrayOutputStream baos = new ByteArrayOutputStream();
marshaller.marshal(requestItem, baos);
xmlObj= new String(baos.toByteArray());
}catch(Exception e){
e.printStackTrace();
}