xml--通过dom4j解析XML

运行下面例子,我们要上网上下载dom4j的jar包。 (如:dom4j-1.6.1)

 

通过dom4j来解析XML,详见例子:

 

通过dom4j生成xml

package com.dom4j;

import java.io.FileOutputStream;
import java.io.FileWriter;

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

public class Dom4j {

	public static void main(String[] args) throws Exception {
		// 创建文档并设置文档的根元素节点 :第一种方式
		// Document document = DocumentHelper.createDocument();
		//
		// Element root = DocumentHelper.createElement("student");
		//
		// document.setRootElement(root);

		// 创建文档并设置文档的根元素节点 :第二种方式
		Element root = DocumentHelper.createElement("student");
		Document document = DocumentHelper.createDocument(root);

		root.addAttribute("name", "zhangsan");

		Element helloElement = root.addElement("hello");
		Element worldElement = root.addElement("world");

		helloElement.setText("hello");
		worldElement.setText("world");

		helloElement.addAttribute("age", "20");

		XMLWriter xmlWriter = new XMLWriter();
		xmlWriter.write(document);

		OutputFormat format = new OutputFormat("    ", true);

		XMLWriter xmlWriter2 = new XMLWriter(new FileOutputStream(
				"student2.xml"), format);
		xmlWriter2.write(document);

		XMLWriter xmlWriter3 = new XMLWriter(new FileWriter("student3.xml"),
				format);

		xmlWriter3.write(document);
		xmlWriter3.close();
	}
}


XML配置文件:

<?xml version="1.0" encoding="utf-8"?>
<学生名册 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="student.xsd" >
	<学生 学号="1">
		<姓名>张三</姓名>
		<性别>男</性别>
		<年龄>20</年龄>
	</学生>
	<学生 学号="2">
		<姓名>李四</姓名>
		<性别>女</性别>
		<年龄>19</年龄>
	</学生>
	<学生 学号="3">
		<姓名>王五</姓名>
		<性别>男</性别>
		<年龄>21</年龄>
	</学生>
</学生名册>

 

输出结果:

<?xml version="1.0" encoding="UTF-8"?>
<student name="zhangsan"><hello age="20">hello</hello><world>world</world></student>


通过dom4j解析xml

 

package com.dom4j;

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

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.DOMReader;
import org.dom4j.io.SAXReader;

public class Dom4j2 {
	public static void main(String[] args) throws Exception {
		SAXReader saxReader = new SAXReader();

		Document doc = saxReader.read(new File("student.xml"));

		Element root = doc.getRootElement();

		System.out.println("root element: " + root.getName());

		List childList = root.elements();

		System.out.println(childList.size());

		// List childList2 = root.elements("学生");
		//
		// System.out.println(childList2.size());

		// Element first = root.element("学生");
		//
		// System.out.println(first.attributeValue("学号"));

		for (Iterator iter = root.elementIterator(); iter.hasNext();) {
			Element e = (Element) iter.next();

			System.out.println(e.attributeValue("学号"));

			for (Iterator iter1 = e.elementIterator(); iter1.hasNext();) {
				Element e1 = (Element) iter1.next();
				System.out.println(e1.getName() + "=" + e1.getText());
			}
		}

		System.out.println("---------------------------");

		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		DocumentBuilder db = dbf.newDocumentBuilder();
		org.w3c.dom.Document document = db.parse(new File("student.xml"));

		DOMReader domReader = new DOMReader();

		// 将JAXP的Document转换为dom4j的Document
		Document d = domReader.read(document);

		Element rootElement = d.getRootElement();

		System.out.println(rootElement.getName());
	}
}

 

xml同上面xml一致。


解析结果:

root element: 学生名册
3
1
姓名=张三
性别=男
年龄=20
2
姓名=李四
性别=女
年龄=19
3
姓名=王五
性别=男
年龄=21
---------------------------
学生名册


 

 

你可能感兴趣的:(dom4j)