【无标题】简单的xml与JavaBean相互转换
xml中的Citys数组值可以用String[]来接收。xml的结构可以看成类似word文档的大纲。首先创建最外层的JavaBean。然后是第二层的JavaBean。多个book节点处理。
·
目录:
一、根据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
后续更新
转换结果

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