ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

缓存与数据库一致性如何解决,JavaBean与xml互转的方法详解

2021-08-06 15:30:43  阅读:192  来源: 互联网

标签:xml return String 互转 import public JavaBean name


public class JaxbUtil {

/**

 * JavaBean装换成xml 默认编码UTF-8

 *

 * @param obj

 * @return

 */

public static String converTomXml(Object obj) {

    return converToXml(obj, "UTF-8");

}



/**

 * JavaBean装换成xml

 *

 * @param obj

 * @param encoding

 * @return

 */

private static String converToXml(Object obj, String encoding) {

    String result = null;

    try {

        JAXBContext context = JAXBContext.newInstance(obj.getClass());

        Marshaller marshaller = context.createMarshaller();

        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

        marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);

        StringWriter writer = new StringWriter();

        marshaller.marshal(obj, writer);

        result = writer.toString();

    } catch (Exception e) {

        e.printStackTrace();

    }

    return result;

}



/**

 * xml装换成JavaBean

 *

 * @param xml

 * @param c

 * @return

 */

@SuppressWarnings("unchecked")

public static <T> T converyToJavaBean(String xml, Class<T> c) {

    T t = null;

    try {

        JAXBContext context = JAXBContext.newInstance(c);

        Unmarshaller unmarshaller = context.createUnmarshaller();

        t = (T) unmarshaller.unmarshal(new StringReader(xml));

    } catch (Exception e) {

        e.printStackTrace();

    }

    return t;

}

}




### 2、简单类型 



(1)单实体类转换



package com.guor.demo.beanToXml;

import java.util.Date;

import javax.xml.bind.annotation.XmlAccessType;

import javax.xml.bind.annotation.XmlAccessorType;

import javax.xml.bind.annotation.XmlAttribute;

import javax.xml.bind.annotation.XmlElement;

import javax.xml.bind.annotation.XmlRootElement;

import javax.xml.bind.annotation.XmlType;

@XmlAccessorType(XmlAccessType.FIELD)

@XmlRootElement

@XmlType(name = “book”, propOrder = { “author”, “calendar”, “price”, “id” })

public class Book {

@XmlElement(required = true)

private String author;

@XmlElement(name = "price_1", required = true)

private float price;

@XmlElement

private Date calendar;

@XmlAttribute

private Integer id;



/**

 *

 * @return

 */

public String getAuthor() {

    return author;

}



public void setAuthor(String author) {

    this.author = author;

}



public float getPrice() {

    return price;

}



public void setPrice(float price) {

    this.price = price;

}



public Date getCalendar() {

    return calendar;

}



public void setCalendar(Date calendar) {

    this.calendar = calendar;

}



public Integer getId() {

    return id;

}



public void setId(Integer id) {

    this.id = id;

}



@Override

public String toString() {

    return "Book [author=" + author + ", price=" + price + ", calendar=" + calendar + ", id=" + id + "]";

}

}




(2)test 



package com.guor.demo.beanToXml;

import java.util.Date;

import org.junit.Test;

import javax.xml.bind.JAXBException;

@SuppressWarnings(“unused”)

public class JaxbTest1 {

/**

 * @throws JAXBException

 */

@Test

public void showMarshaller() {

    Book book = new Book();

    book.setId(100);

    book.setAuthor("lin");

    book.setCalendar(new Date());

    book.setPrice(23.56f);

    String str = JaxbUtil.converTomXml(book);

    System.out.println(str);



}



/**

 * @throws JAXBException

 */

@Test

public void showUnMarshaller() {

    String str = "<?xml version =\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" + "<book id =\"100\">"

            + "<author>lin</author>" + "<calendar>2018-9-3T11:58.006</calendar>" + "<price_1>23.56</price_1>"

            + "</book>";

    Book book = JaxbUtil.converyToJavaBean(str, Book.class);

    System.out.println(book);

}

}




 (3)控制台输出



![](https://www.icode9.com/i/ll/?i=20210130084212537.png?,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2d1b3J1aV9qYXZh,size_16,color_FFFFFF,t_70)



### 3、类中包含复杂对象的转换



(1)实体类1



package com.guor.demo.beanToXml;

import javax.xml.bind.annotation.XmlAccessType;

import javax.xml.bind.annotation.XmlAccessorType;

import javax.xml.bind.annotation.XmlAttribute;

import javax.xml.bind.annotation.XmlElement;

import javax.xml.bind.annotation.XmlRootElement;

import javax.xml.bind.annotation.XmlType;

@XmlAccessorType(XmlAccessType.FIELD)

@XmlRootElement(name = “student”)

@XmlType(propOrder = {})

public class Student {

@XmlAttribute

private Integer id;

@XmlElement

private String name;

@XmlElement(name = "role")

private Role role;



public Integer getId() {

    return id;

}



public void setId(Integer id) {

    this.id = id;

}



public String getName() {

    return name;

}



public void setName(String name) {

    this.name = name;

}



public Role getRole() {

    return role;

}



public void setRole(Role role) {

    this.role = role;

}



@Override

public String toString() {

    return "Student [id=" + id + ", name=" + name + ", role=" + role + "]";

}

}




(2)实体类2 



package com.guor.demo.beanToXml;

import javax.xml.bind.annotation.XmlAccessType;

import javax.xml.bind.annotation.XmlAccessorType;

import javax.xml.bind.annotation.XmlElement;

import javax.xml.bind.annotation.XmlType;

@XmlAccessorType(XmlAccessType.FIELD)

@XmlType(propOrder = { “name”, “desc” })

public class Role {

@XmlElement

private String name;

@XmlElement

private String desc;



public String getName() {

    return name;

}



public void setName(String name) {

    this.name = name;

}



public String getDesc() {

    return desc;

}



public void setDesc(String desc) {

    this.desc = desc;

}



@Override

public String toString() {

    return "Role [name=" + name + ",desc=" + desc + "]";

}

}




(3)test 



package com.guor.demo.beanToXml;

import org.junit.Test;

public class JaxbTest2 {

@Test

public void showMarshaller() {

    Student student = new Student();

    student.setId(12);

    student.setName("nihao");

    Role role = new Role();

    role.setDesc("管理");

    role.setName("班长");

    student.setRole(role);

    String str = JaxbUtil.converTomXml(student);

    System.out.println(str);



}



@Test

public void showUnMarshaller() {

    String str = "<?xml version =\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" + "<student id =\"12\">"

            + "<name>nihao</name>" + "<role>" + "<desc>管理</desc>" + "<name>班长</name>" + "</role>" + "</student>";

    Student student = JaxbUtil.converyToJavaBean(str, Student.class);

    System.out.println(student);

}

}






### 最后

作为过来人,小编是整理了很多进阶架构视频资料、面试文档以及PDF的学习资料,针对上面一套系统大纲小编也有对应的相关进阶架构视频资料,如果**‘你’**确定好自己未来的道路或者想学习提升自己技术栈、技术知识的小伙伴们**可以[点击这里来获取免费学习资料](https://gitee.com/vip204888/java-p7)提升自己(全套面试文档、PDF、进阶架构视频)**

![](https://www.icode9.com/i/ll/?i=img_convert/3e1212e0ca1b11e610a12d0640e4349e.png)
![](https://www.icode9.com/i/ll/?i=img_convert/6a0cf9071b5bf1a7049f81061feccb11.png)


TF-8\" standalone=\"yes\"?>" + "<student id =\"12\">"

                + "<name>nihao</name>" + "<role>" + "<desc>管理</desc>" + "<name>班长</name>" + "</role>" + "</student>";

        Student student = JaxbUtil.converyToJavaBean(str, Student.class);

        System.out.println(student);

    }

}

最后

作为过来人,小编是整理了很多进阶架构视频资料、面试文档以及PDF的学习资料,针对上面一套系统大纲小编也有对应的相关进阶架构视频资料,如果**‘你’确定好自己未来的道路或者想学习提升自己技术栈、技术知识的小伙伴们可以点击这里来获取免费学习资料提升自己(全套面试文档、PDF、进阶架构视频)**

[外链图片转存中…(img-IjgN1nNL-1628234865678)]
[外链图片转存中…(img-4o6PeBak-1628234865681)]

标签:xml,return,String,互转,import,public,JavaBean,name
来源: https://blog.csdn.net/m0_60452169/article/details/119456140

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有