一、根据xml文件结构来创建JavaBean

先看xml文件结构

xml的结构可以看成类似word文档的大纲
在这里插入图片描述在这里插入图片描述

创建JavaBean

  • 首先创建最外层的JavaBean
    在这里插入图片描述
    在这里插入图片描述

  • 然后是第二层的JavaBean
    在这里插入图片描述

  • xml中的Citys数组值可以用 String[] 来接收
    在这里插入图片描述
    在这里插入图片描述

  • 多个book节点处理

  •   @XmlElementWrapper注解:围绕XML表示生成包装器元素。这主要用于围绕集合生成包装器XML元素。
      在book节点上使用会在book节点上再生成一个节点来包裹book节点
    

在这里插入图片描述

  • 第三层
  • 就是book节点内部的节点对应的值
    book:
    在这里插入图片描述

二、编写JaxbUtil工具类

在这里插入图片描述

  • 不想编写也可以这样:
  • xmlStr : xml字符串
  • Library: 根节点类
    在这里插入图片描述
  • 还有节点属性值的获取(原本的xml文件里没有,这里只是做个演示)
    在这里插入图片描述

三、xml转JavaBean

测试代码

package test2;


import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
import java.io.*;

public class test2 {

    public static void main(String[] args) throws Exception {
        String xmlPath = "E:\\MyJava\\demo\\untitled\\src\\test2\\test.xml";

        File file = new File(xmlPath);
        InputStreamReader read = new InputStreamReader(new FileInputStream(file), "UTF-8");
        BufferedReader bufferedReader = new BufferedReader(read);
        String readStr = "";
        String xmlStr = "";
        while(true){
            readStr = bufferedReader.readLine();
            if (null != readStr){
                xmlStr += readStr;
            }else{
                break;
            }
        }
//        JAXBContext context = JAXBContext.newInstance(Library.class);
//        Unmarshaller unmarshaller = context.createUnmarshaller();
//        Library library = (Library) unmarshaller.unmarshal(new StringReader(xmlStr));

        Library library = xmlConversionJavabean(xmlStr, Library.class);
        System.out.println(library.toString());
        System.out.println(library.getName());
        System.out.println(library.getChinese().toString());
        System.out.println(library.getEnglish());
        for(BooksXml books : library.getChinese().getBooks()){
            System.out.println(books);
        }
        System.out.println(library.getEnglish().getBook());
        System.out.println(library.getCitys());
        for (String city : library.getCitys().getCity()){
            System.out.print(city+" ");
        }
        System.out.println();
    }



    public static <T> T xmlConversionJavabean(String xml, Class<T> c) {
        T t = null;
        try {
            // 调用成功创建了一个可解析示例 xxx.xml 文件的上下文
            JAXBContext context = JAXBContext.newInstance(c);
            // 创建一个<t> Unmarshaller <t>对象,该对象可用于将XML数据转换为Java内容树。
            Unmarshaller unmarshaller = context.createUnmarshaller();
            t = (T) unmarshaller.unmarshal(new StringReader(xml));
        } catch (Exception e) {
            e.printStackTrace();
        }
        return t;
    }
}

转换结果

在这里插入图片描述

四、JavaBean转xml

后续更新

转换结果

Logo

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

更多推荐