简介:
JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用程序中能方便地结合XML数据和处理函数。
`
示例
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class MedicalRecordInfoReq implements Serializable {
private String hisMedicalId;
private List<DiagEntityReq> diagList;
}
Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class DiagEntityReq implements Serializable {
private String diagnosticCode;
private String diagnosticName;
private String diagnosticMainSign;
private String diagTypeCode;
}
@Slf4j
public class XMLUtil {
public static 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);
// 隐去报文头的生产
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
// 将对象转换成输出流形式的xml
marshaller.marshal(obj, sw);
} catch (JAXBException e) {
log.error("convertToXml happend error", e);
}
String str = sw.toString();
return str;
}
public static void main(String[] args) {
MedicalRecordInfoReq medicalRecordInfoReq = new MedicalRecordInfoReq();
medicalRecordInfoReq.setHisMedicalId("20190412000001");
List<DiagEntityReq> diagList = Lists.newArrayList();
DiagEntityReq diagEntityReq1 = new DiagEntityReq();
diagEntityReq1.setDiagnosticCode("123111");
diagEntityReq1.setDiagnosticName("诊断名称");
diagEntityReq1.setDiagnosticMainSign("1");
diagEntityReq1.setDiagTypeCode("2");
diagList.add(diagEntityReq1);
DiagEntityReq diagEntityReq2 =