XML,dom4j解析XML文件

简单学习了XML,做好相关记录以便以后回看。

目录

XML介绍:

XML作用

XML结构

DTD文件

dom4j解析XML文件:

准备工作

dom4j读取XML文件

dom4j生成XML文件

注意问题:

1.导入的包是org.dom4j。

2.生成XML文件时要指定编码格式并关闭资源,否则会造成乱码,或者生成不了XML文件。


 

XML介绍:

XML作用

用来传输和存储数据。

XML结构

树结构

<?xml version="1.0" encoding ="UTF-8"?>   <!--xml的版本和编码格式-->
<!--DTD规定xml的内容-->
<!DOCTYPE students SYSTEM "students.dtd">

<students> <!-- 根元素有且只有一个 -->
    <student id= "1">
        <name>张三</name>
        <cource>java</cource>
        <grade>95</grade>
    </student>
    <student id= "2">
        <name>李四</name>
        <cource>sql</cource>
        <grade>95</grade>
    </student>
</students>

DTD文件

用于规定XML包含的内容及格式。

<?xml version="1.0" encoding="UTF-8"?>   
<!ELEMENT students (student+)>   <!--规定根元素students中含有的元素及个数-->
<!ELEMENT student (name, cource, grade)> <!--规定元素student中含有的元素及个数-->

<!ELEMENT id (#PCDATA)> <!--规定元素id的类型-->
<!ELEMENT name (#PCDATA)> 
<!ELEMENT cource (#PCDATA)>
<!ELEMENT grade (#PCDATA)>

<!ATTLIST student id CDATA #REQUIRED> <!--规定元素student的属性id-->

Java对XML内容进行解析可以通过dom4j解析

dom4j解析XML文件:

准备工作

dom4j读取XML文件

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;

public class XMLtest {

//<students> <!-- 根元素有且只有一个 -->
//    <student id= "1">
//        <name>张三</name>
//        <cource>java</cource>
//        <grade>95</grade>
//    </student>
//    <student id= "2">
//        <name>李四</name>
//        <cource>sql</cource>
//        <grade>95</grade>
//    </student>
//</students>

	public static void main(String[] args) throws Exception {
		SAXReader reader = new SAXReader();
		// 读取xml文件
		Document doc = reader.read(new File("src/students.xml"));
		// 获取根元素students
		Element root = doc.getRootElement();
		// 获取根元素最近一层元素student的迭代
		Iterator<?> EIt = root.elementIterator();
		while (EIt.hasNext()) {
			Element e = (Element) EIt.next();
			// 获取元素student属性的迭代
			Iterator<?> AIt = e.attributeIterator();
			while (AIt.hasNext()) {
				Attribute att = (Attribute) AIt.next();
				System.out.println(att.getName() + "=" + att.getValue());
			}
			// 获取元素student的其他元素
			Element name = e.element("name");
			Element cource = e.element("cource");
			Element grade = e.element("grade");
			System.out.println(name.getName() + "=" + name.getStringValue());
			System.out.println(cource.getName() + "=" + cource.getText());
			System.out.println(grade.getName() + "=" + grade.getText());
			System.out.println("--------------------------");
		}
	}
}

dom4j生成XML文件

import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;

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

public class XMLtest2 {

	public static void main(String[] args) throws Exception {
		//生成doc对象
		Document doc = DocumentHelper.createDocument();
		//生成根元素books
		Element root = doc.addElement("books");
		//为根元素books添加子元素book
		Element book = root.addElement("book");
		//为元素book添加属性
		book.addAttribute("id", "1");
		//为元素book添加元素name,author,price
		Element name = book.addElement("name");
		Element author = book.addElement("author");
		Element price = book.addElement("price");
		//为元素添加值
		name.addText("Java");
		author.addText("李四");
		price.addText("67");
		
		//准备写入xml文件
		OutputFormat format = OutputFormat.createPrettyPrint();  //格式
		OutputStream out = new FileOutputStream("src/books.xml");
		Writer wr=new OutputStreamWriter(out,"UTF-8");    //指定编码格式utf-8
		XMLWriter writer = new XMLWriter(wr,format); //指定文件
		writer.write(doc);
		//关闭资源
		writer.close();  //只有使用了.close   doc才会写入文件中
	}

}

注意问题:

1.导入的包是org.dom4j。

2.生成XML文件时要指定编码格式并关闭资源,否则会造成乱码,或者生成不了XML文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值