加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xml--通过dom4j解析XML

发布时间:2020-12-16 05:20:22 所属栏目:百科 来源:网络整理
导读:运行下面例子,我们要上网上下载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.Document

运行下面例子,我们要上网上下载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
---------------------------
学生名册

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读