xml_dom4j

Posted yue-170305

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了xml_dom4j相关的知识,希望对你有一定的参考价值。

1.用dom4j解析文件

package Xml3;

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

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


/*
 * 方法readDocumentByIterator()提供一种解析xml文件方法
 * 每个Element通过elementIterator()和attributeIterator获取
 * 其子元素和属性的迭代器
 */
public class Dom4jTest2 {
	private File file;
	public Dom4jTest2(File file) {
		this.file = file;
	}
	public static void main(String[] args) {
		Dom4jTest2 test = new Dom4jTest2(
				new File("src/com/briup/xml/chap02/student.xml"));
		test.readDocumentByIterator();
		//将xml转换成string类型
		SAXReader reader = new SAXReader();
		try {
			Document document = reader.read
					(new File("src/com/briup/xml/chap02/student.xml"));
			String docXmlText = document.asXML();
			System.out.println(docXmlText);
			System.out.println("-------------docXmlText----------");
			Element root = document.getRootElement();
			String rootXmlText = root.asXML();
			System.out.println(rootXmlText);
			System.out.println("-------------rootXmlText----------");
			Element son = root.element("student");
			String sonXmlText = son.asXML();
			System.out.println(sonXmlText);
			System.out.println("-------------sonXmlText-----------");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	public Document getDocument() {
		SAXReader reader = new SAXReader();
		Document document = null;
		try {
			document = reader.read(file);
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		return document;
	}
	/*
	 * 该方法只是枚举了两层,如果一直读取需要进行迭代循环
	 */
	public void readDocumentByIterator() {
		Element root = getDocument().getRootElement();
		//枚举根节点下所有子节点
		for(Iterator ie = root.elementIterator();ie.hasNext();) {
			System.out.println("========");
			Element element = (Element) ie.next();
			System.out.println(element.getName());
			//枚举属性
			for(Iterator ia = element.attributeIterator();ia.hasNext();) {
				Attribute attribute = (Attribute) ia.next();
				System.out.println(attribute.getName()
						+"="+attribute.getValue());
			}
			//枚举当前节点下所有子节点
			for(Iterator ieson = element.elementIterator();ieson.hasNext();) {
				Element son = (Element) ieson.next();
				System.out.println(son.getName()
						+"="+son.getText());
			}
		}
	}
}

1.2用来创建xml文件

package Xml3;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

public class Dom4jTest {
	public static void main(String[] args) {
		Dom4jTest test = new Dom4jTest();
		Document doc = test.generateDocument2();
		File file = new File("src/com/briup/xml/chap02/student.xml");
		test.saveDocument(doc, file);
	}
	public void saveDocument(Document doc,File file) {
			//美化格式
		OutputFormat format = OutputFormat.createPrettyPrint();
		format.setEncoding("utf-8");
		try {
			//按照字符流将xml输出到指定file文件中
			OutputStream os= new FileOutputStream(file);
			OutputStreamWriter osw = new OutputStreamWriter(os);
			XMLWriter writer = new XMLWriter(osw, format);
			//根据document内容按照xml格式输出
			writer.write(doc);
			writer.flush();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	/*
	 * <students>
	 * 		<student id=‘1‘>
	 * 			<name>....</name>
	 * 			....
	 * 		</student>
	 *</students>
	 */
	public Document generateDocument(){
		//创建文档
		Document document = DocumentHelper.createDocument();
		//创建根节点
		Element studentsElement = document.addElement("students");
		//创建注释
		studentsElement.addComment("this is comment");
		//创建stu1子节点
		Element stu1Element = studentsElement.addElement("student");
		//stu1子节点添加属性
		stu1Element.addAttribute("id","1");
		Element nameElement = stu1Element.addElement("name");
		nameElement.addText("tom");
		Element ageElement = stu1Element.addElement("age");
		ageElement.addText("18");
		return document;
	}
	public Document generateDocument2() {
		String str = "<?xml version=‘1.0‘ encoding=‘utf-8‘?>"
					+"<students><!--this is common-->"
					+ "<student id=‘2‘>"
					+ "<name>jack</name><age>20</age>"
					+ "</student></students>";
		Document document = null;
		try {
			document = DocumentHelper.parseText(str);
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		return document;
	}
}

  

以上是关于xml_dom4j的主要内容,如果未能解决你的问题,请参考以下文章

如何用最新的KARAF替换pax-logging-service与pax-logging-log4j2

日志片段,类中的Logfactory声明

crawler4j 学习

Maven类路径错误多个SLF4J绑定

如何使用 jasperreports 和barcode4j 居中对齐条形码

Neo4j:具有多种关系的二部到单部投影