目录
一、 三步构建 XML转成java bean
1.XML转XSD
2.XSD转JavaBean
3.jaxb 工具类
4.测试
📢📢📢📣📣📣
哈喽!大家好,我是「Leen」。刚工作几年,想和大家一同进步🤝🤝
一位上进心十足的Java博主!😜😜😜
喜欢尝试一些新鲜的东西,平时比较喜欢研究一些新鲜技术和一些自己没有掌握的技术领域。能用程序解决的坚决不手动解决😜😜😜目前已涉足Java、Python、数据库(MySQL、pgsql、MongoDB、Oracle...)、Linux、HTML、VUE、PHP、C(了解不多,主要是嵌入式编程方向做了一些)...(还在不断地学习,扩展自己的见识和技术领域中),希望可以和各位大佬们一起进步,共同学习🤝🤝
✨ 如果有对【Java】,或者喜欢看一些【实操笔记】感兴趣的【小可爱】,欢迎关注我
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️
今天给大家分享的是使用idea 将xml转为JavaBean并且取其中的数据和其他的数据进行交互,接下来直接上干货
一、 三步构建 XML转成java bean
1.XML转XSD
如果你是XSD的话,直接从 2 开始.
(1). 用idea打开xml文件,右击鼠标,选择 generate XSD from XML 如图
(2). 接下来是,选择自己想要的相关类型.如果想要生成的JavaBean属性和XML一致,记得选择Design type 为local elements type. 然后点击 OK 就可在当前文件夹生成了对应的XSD约束.
2.XSD转JavaBean
(1). 选中XSD,打开 并右键如下图,选中 generate javacode from XSD by JAXB
(新版idea用不了,可以用自己的idea试一下,我用2020前的试了一下是有的,2022的没有这个设置项)
如果idea没有这个功能的话,可以使用下面的命令进行转换
xjc -d "E:\\IdeaProjects\\test\\src\\main\\java\\com\\leen\\test\\test2024\\test605\\" -p com.leen.test.test2024.test605 "E:\\IdeaProjects\\test\\src\\main\\java\\com\\leen\\test\\test2024\\test605\\test.xsd"
#xjc -d 项目java文件夹 -p 包名 xsd文件名
#在xsd目录下执行,或者xsd文件名加上绝对路径
3.jaxb 工具类
package com.leen.test.test2024.test605.utils;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import java.io.StringReader;
import java.io.StringWriter;
/**
* Author:Leen
* Date: 2024/6/5 0005 15:17
*/
public class JaxbUtil {
/**
* JavaBean转换成xml
* 默认编码UTF-8
* @param obj
* @return
*/
public static String convertToXml(Object obj) {
return convertToXml(obj, "UTF-8");
}
/**
* JavaBean转换成xml
* @param obj
* @param encoding
* @return
*/
public static String convertToXml(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;
}
}
4.测试
package com.leen.test.test2024.test605;
import com.leen.test.test2024.test605.utils.JaxbUtil;
import com.leen.test.test2024.test605.xmlFour.Bookstore;
import com.leen.test.test2024.test605.xmlOne.CAR;
import com.leen.test.test2024.test605.xmlOne.GATHERINFO;
import com.leen.test.test2024.test605.xmlTwo.COMMANDINFO;
/**
* Author:Leen
* Date: 2024/6/5 0005 15:18
*/
public class Test605 {
public static void main(String[] args) {
String xmlTest = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<bookstore>\n" +
" <book category=\"children\">\n" +
" <title lang=\"en\">Harry Potter</title>\n" +
" <author>J.K. Rowling</author>\n" +
" <year>2005</year>\n" +
" <price>29.99</price>\n" +
" </book>\n" +
" <book category=\"web\">\n" +
" <title lang=\"en\">Learning XML</title>\n" +
" <author>Erik T. Ray</author>\n" +
" <year>2003</year>\n" +
" <price>39.95</price>\n" +
" </book>\n" +
" <book category=\"cooking\">\n" +
" <title lang=\"en\">Everyday Italian</title>\n" +
" <author>Giada De Laurentiis</author>\n" +
" <year>2005</year>\n" +
" <price>30.00</price>\n" +
" </book>\n" +
" <book category=\"children\">\n" +
" <title lang=\"en\">Charlotte's Web</title>\n" +
" <author>E. B. White</author>\n" +
" <year>1952</year>\n" +
" <price>25.00</price>\n" +
" </book>\n" +
"</bookstore>\n";
Bookstore bookstore = JaxbUtil.converyToJavaBean(xmlTest, Bookstore.class);
System.out.println(bookstore.getBook().get(0).getAuthor());
String resTest = JaxbUtil.convertToXml(bookstore);
System.out.println(resTest);
}
}
输出结果 :
J.K. Rowling
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<bookstore>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J.K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="web">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="children">
<title lang="en">Charlotte's Web</title>
<author>E. B. White</author>
<year>1952</year>
<price>25.00</price>
</book>
</bookstore>
这样就把xml里面的数据给取出来了,兄弟们就可以进行后续的操作了
欢迎大家在评论区讨论,今天的干货分享就到此结束了,如果觉得对您有帮助,麻烦给个三连!
以上内容为本人的经验总结和平时操作的笔记。若有错误和重复请联系作者删除!!感谢支持!!