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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python meshgrid_numpy的生成网格矩阵 meshgrid()

    python meshgrid_numpy的生成网格矩阵 meshgrid()numpy模块中的meshgrid函数用来生成网格矩阵,最简单的网格矩阵为二维矩阵meshgrid函数可以接受x1,x2,…,xn等n个一维向量,生成N-D矩阵。1基本语法meshgrid(*xi,**kwargs)参数:xi-x1,x2,…,xn:array_like返回值:X1,X2,…,XN:ndarray2示例(二维网格)2.1一个参…

    2022年5月27日
    139
  • python %s%d(古代汉语中字的用法)

    %s格式化字符串print(‘str1%s’%’str2’)&gt;&gt;str1str2#意思是%作为一个替代,将后面的‘str2’字符串加到str1后面案例示范具体用法string="hello"#%s打印时结果是helloprint"string=%s"%string#output:string=hello#…

    2022年4月10日
    38
  • 彻底删除2345安全卫士_怎么卸载安全卫士

    彻底删除2345安全卫士_怎么卸载安全卫士以下解决方法需要你有一个U盘PE启动盘。今天帮网友解决一个问题:2345安全卫士服务进程怎么也杀不掉的问题。众所周知,2345因某些原因在网友的心中口碑是非常地差,这不,这两天就有一位网友中招了。要不是担心以后还会中招,折腾了这么久早就重装系统了!!2345安全卫士卸载不了,2345SafeCenterSvc服务更是无法关闭,卸载了又出现,简直像幽灵一样!出现这个情况,说明你在…

    2025年8月29日
    4
  • 奇点临近-人工智能的时代已经来了[通俗易懂]

    当人们看到太多相同的时候,也许我们很无知;当人们看到太多不同的时候,也许我们视野不够大;当人们同时看到不同和相同的时候,也许恰是我们智慧的原点。奇点临近奇点临近这本书,是一本预测人工智能和科技未来的奇书。目前人工智能处于快速发展的阶段,在很多领域中已经能够越来越多的看到人工智能产品的出现,改变着这个世界,改变着我们每一个人的生活。在谈人工智能之前,先聊聊什么是 “奇点” ,奇点 这个…

    2022年2月28日
    47
  • Mac下JMeter的简要使用入门级

    Mac下JMeter的简要使用入门级关于压力测试工具 JMeter 的安装和使用 Mac 下 JMeter 的安装并中文汉化 JMeter 入门级的使用方法

    2025年10月22日
    2
  • poe交换机和接入交换机的区别_光纤交换机和普通交换机的区别

    poe交换机和接入交换机的区别_光纤交换机和普通交换机的区别POE交换机与普通交换机区别的话,POE交换机就是除了能提供普通交换机所具有的传输功能,还能给网线的另一端设备提供供电功能。普通的交换机主要是交换数据的功能,并没有具备供电的功能。接下来我们就一起来详细看看POE交换机和普通交换机的区别具体有哪些?POE交换机和普通交换机具有以下几点区别:1.可靠性不同:POE交换机就是支持对网线供电的交换机,和普通交换机相比就是受电终端(比如AP、数字摄像头等)不用再进行电源布线,对整个网络而言可靠性更高。2.功能不同:POE交换机就是除了能提供普通交换机所

    2022年10月5日
    3

发表回复

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

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