Java生成XML格式

Java生成XML格式工具:dom4j-1.6.1.jar相关类importorg.dom4j.Attribute;importorg.dom4j.Document;importorg.dom4j.DocumentException;importorg.dom4j.DocumentHelper;importorg.dom4j.Element;importorg.dom4j.io.SAXRe…

大家好,又见面了,我是你们的朋友全栈君。

工具:

dom4j-1.6.1.jar

相关类

  • import org.dom4j.Attribute;
  • import org.dom4j.Document;
  • import org.dom4j.DocumentException;
  • import org.dom4j.DocumentHelper;
  • import org.dom4j.Element;
  • import org.dom4j.io.SAXReader;
  • import org.dom4j.io.XMLWriter;

实例1

还是直接看例子吧,最终生成结果展示:

<?xml version="1.0" encoding="utf-8"?>

<root>
  <username>张三</username>
  <password>123456</password>
</root>

代码如下:

    Document document = DocumentHelper.createDocument();
    //创建根节点
    Element root = document.addElement("root");
    //添加子节点
    Element username = root.addElement("username");
    Element password = root.addElement("password");
    //赋值
    username.addText("张三");
    password.addText("123456");
    String strXML = document.asXML();
    System.out.println(strXML);

实例2

适用于部分子节点封装成类,最终生成结果展示:
其中,结构是重复的,可以写成一个类Course.java;

<?xml version="1.0" encoding="utf-8"?>

<root>
  <username>张三</username>
  <password>123456</password>
  <courses>
    <course>
      <courseid>课程id</courseid>
      <coursename>语文课</coursename>
      <coursenum>007</coursenum>
      <courseteacher>王老师</courseteacher>
    </course>
    <course>
      <courseid>课程id2</courseid>
      <coursename>数学课</coursename>
      <coursenum>008</coursenum>
      <courseteacher>李老师</courseteacher>
    </course>
  </courses>
</root>

代码如下:


Course.java

public class Course{
    String courseId;//课程id
    String courseName;//名称
    String courseNum;//课程号
    String courseTeacher;//老师
    
    public String getCourseId() {
        return courseId;
    }
    public void setCourseId(String courseId) {
        this.courseId = courseId;
    }
    public String getCourseName() {
        return courseName;
    }
    public void setCourseName(String courseName) {
        this.courseName = courseName;
    }
    public String getCourseNum() {
        return courseNum;
    }
    public void setCourseNum(String courseNum) {
        this.courseNum = courseNum;
    }
    public String getCourseTeacher() {
        return courseTeacher;
    }
    public void setCourseTeacher(String courseTeacher) {
        this.courseTeacher = courseTeacher;
    }
}

生成xml代码:

	public static void main(String[] args) {
	    Document document = DocumentHelper.createDocument();
	    //创建根节点
        Element root = document.addElement("root");
        //添加子节点
        Element username = root.addElement("username");
        Element password = root.addElement("password");
        //赋值
        username.addText("张三");
        password.addText("123456");
        Element courses = root.addElement("courses");
        
        Course course = new Course();
        course.setCourseId("课程id");
        course.setCourseName("语文课");
        course.setCourseNum("007");
        course.setCourseTeacher("王老师");
        xmlUtil.beanToXml(course, courses, "course");
        
        Course course2 = new Course();
        course2.setCourseId("课程id2");
        course2.setCourseName("数学课");
        course2.setCourseNum("008");
        course2.setCourseTeacher("李老师");
        
        beanToXml(course2, courses, "course");
        String strXML = document.asXML();
        System.out.println(strXML);
	}

其中beanToXml方法如下,自己封装的;

	/**
	 * 将类生成xml
	 * @param object 对象
	 * @param objName 对象节点名称
	 * @return
	 */
	public  Element beanToXml(Object object,Element rootElement,String objName){
		Class clazz = object.getClass();
		Method[] methods = clazz.getDeclaredMethods();
		//Document document = DocumentHelper.createDocument(); 
		//设置xml的编码
		//document.setXMLEncoding(xmlEncoding);
		//设置根节点名称
		//Element root = document.addElement(rootName);
		//设置对象节点名称
		Element body = rootElement.addElement(objName);
		for (int i = 0; i < methods.length; i++) {
			if(methods[i].getName().substring(0,3).equals("get")){
				Element element = body.addElement(methods[i].getName().substring(3,methods[i].getName().length()).toLowerCase());
				try {
					if(methods[i].invoke(object) != null){
						element.addText(methods[i].invoke(object).toString().trim());
					}else{
						element.addText("");
					}
				} catch (IllegalArgumentException e) {
					// TODO Auto-generated catch block
					CLS_InterfaceLogger.error(e.getMessage(), e);
				} catch (IllegalAccessException e) {
					// TODO Auto-generated catch block
					CLS_InterfaceLogger.error(e.getMessage(), e);
				} catch (InvocationTargetException e) {
					// TODO Auto-generated catch block
					CLS_InterfaceLogger.error(e.getMessage(), e);
				}
			}
		}
		//return document.asXML();
		return body;
	}

总结:

脑子里要生成的结构,一步一步的添加或循环创建子节点,多写几次就ok了!
有问题可以加下qq交流群:700637673

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162481.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • postMessage详解

    postMessage详解目录一、概述二、详解一、概述作用该方法是HTML5引入的API,可以通过异步方式实现跨源通信,多用于窗口间数据通信。它提供了一种受控机制来规避不同源脚本无法通信的限制,只要正确使用,这种方法很安全。什么是跨源同源即指相同的协议、域名或IP、端口号。浏览器具有同源限制,同源脚本可以相互通信,一般非同源(跨源)的脚本文件禁止相互通信。二、详解语法示例-发送程序&…

    2022年7月15日
    15
  • phpstorm激活码2021【注册码】

    phpstorm激活码2021【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    32
  • FindBugs入门简介(eclipse安装使用实例)

    FindBugs入门简介(eclipse安装使用实例)

    2020年11月12日
    198
  • idea2021.3 激活码(JetBrains全家桶)

    (idea2021.3 激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html1STL5S9V8F-eyJsaWNlbnNlSW…

    2022年3月27日
    596
  • mysql导出数据库

    mysql导出数据库mysql命令行导出数据库mysqldump进行数据库导出备份命令行提示“拒绝访问”

    2022年7月27日
    6
  • 一系列令人敬畏的.NET核心库,工具,框架和软件[通俗易懂]

    一系列令人敬畏的.NET核心库,工具,框架和软件[通俗易懂]内容一般框架,库和工具API应用框架应用模板身份验证和授权Blockchain博特构建自动化捆绑和缩小高速缓存CMS代码分析和指标压缩编译器,管道工和语言加密数据库数据库驱动数据库工具和实用程序日期和时间分布式计算电子商务和支付例外功能编程图像GUIIDE国际化国际奥林匹克委…

    2022年7月16日
    13

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号