java dom4j生成和解析xml

dom4j

使用:需先导入dom4j对应的jar,本章用的是dom4j-1.6.1.jar

优点:DOM4J使Java开发的灵活性和XML解析代码易于维护

dom4j相关操作类

Document:表示整个xml文档,是一个树形结构

Eelment:表示一个xml的元素,提供方法操作其子元素,它的文本,属性和名称空间

Attribute:表示元素的属性

Node:表示元素,属性

dom4j生成xml

package com.xm.xml.dom4j;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

/**
 * java dom4j生成xml
 * @author ouyangjun
 */
public class CreateDom4j {

	public static void main(String[] args) {
		
		// 调用dom4j生成xml方法
		createDom4j(new File("E:\\dom4j.xml"));
	}
	
	public static void createDom4j(File file){
		try{
			// 创建Document
			Document document = DocumentHelper.createDocument();
			
			// 添加根节点
			Element root = document.addElement("root");
			
			// 在根节点下添加第一个子节点
			Element oneChildElement= root.addElement("person").addAttribute("attr", "root noe");

			oneChildElement.addElement("people")
			        .addAttribute("attr", "child one")
			        .addText("person one child one");
			oneChildElement.addElement("people")
		            .addAttribute("attr", "child two")
		            .addText("person one child two");
			
			// 在根节点下添加第一个子节点
			Element twoChildElement= root.addElement("person").addAttribute("attr", "root two");

			twoChildElement.addElement("people")
			        .addAttribute("attr", "child one")
			        .addText("person two child one");
			twoChildElement.addElement("people")
		            .addAttribute("attr", "child two")
		            .addText("person two child two");
			
			OutputFormat format = OutputFormat.createPrettyPrint();
			XMLWriter writer = new XMLWriter( new FileOutputStream(file), format);
			writer.write(document);
			
			System.out.println("dom4j CreateDom4j success!");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

xml效果图:

dom4j解析xml

package com.xm.xml.dom4j;

import java.io.File;
import java.util.Iterator;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;

/**
 * java jdom解析xml
 * @author ouyangjun
 */
public class ParseDom4j {

	public static void main(String[] args) {
		
		// 调用dom4j解析xml方法
		parseDom4j(new File("E:\\dom4j.xml"));
	}
	
	public static void parseDom4j(File file){
		try {
			// 创建dom4j解析器
			SAXReader reader = new SAXReader();
			
			// 获取Document节点
			Document document = reader.read( file );
			System.out.println("Root element :" + document.getRootElement().getName());

			// 递归打印xml文档信息
			parseElement(document.getRootElement());
			
		} catch (DocumentException e) {
			e.printStackTrace();
		}
	}

	public static void parseElement(Element rootElement){
		Element element;
		for (Iterator<?> iterator = rootElement.elementIterator(); iterator.hasNext();) {
			
			element = (Element)iterator.next();
			System.out.println("Current Element Name :" + element.getName() +" , Text :"+ element.getTextTrim());
            if (element.getNodeType() == Node.ELEMENT_NODE) {
            	if(element.hasContent()){
            		parseElement(element);
            	}
            }
         }
	}
}

控制台打印效果图:

本章完结,待续!

本文说明:该文章属于原创,如需转载,请标明文章转载来源

猜你喜欢

转载自blog.csdn.net/p812438109/article/details/81814157