JAVA使用SAX技术读取XML文档

在读取XML文档之前先要写好一个xml文档,示例xml文档如下

innerdtd.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- 内部声明DTD -->
<!DOCTYPE scores[
	<!ELEMENT scores (student+)>
	<!ELEMENT student (name,course,score)>
	<!ATTLIST student id CDATA #REQUIRED>
	<!ELEMENT name (#PCDATA)>
	<!ELEMENT course (#PCDATA)>
	<!ELEMENT score (#PCDATA)>
]>

<scores>
    <student  id="1">
        <name>www</name>
        <course>java</course>
        <score>66</score>
    </student>
    <student id="2">
        <name>eee</name>
        <course>php</course>
        <score>77</score>
    </student>
</scores>

这个xml文档格式良好,一个根元素,两个子元素。

xml解读技术主要由DOM技术、SAX技术、JDOM技术、DOM4J技术,此次示例运用的是SAX。其他的技术写法与此相似,导入的jar包会不同而已。

  1. 首先,在eclipse中new一个class,名为TestXml.java

  2. 其次,下载导入jar包,dom4j.jar
    官方下载地址如下:https://dom4j.github.io/
    在这里插入图片描述

    本人用的是dom4j-1.6.1.jar这个包。

    1. 接下来编写程序,内容如下:
import java.io.File;
import java.util.Iterator;

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

public class TestXml {
	public static void main(String[] args) throws Exception{
		//1. 创建SAXReader对象,用于读取xml文件
		SAXReader reader = new SAXReader();
		//读取xml文件,得到document对象
		Document doc = reader.read(new File("src/innerdtd.xml"));
		//获取根元素
		Element root = doc.getRootElement();
//		System.out.println(root.getName());
		//获取根元素下的所有子元素
		Iterator<Element> it = root.elementIterator();
//报黄或写为 : Iterator<?> it = root.elementIterator();
		while(it.hasNext()){
			//取出元素
			Element e = (Element)it.next();
//			System.out.println(e.getName());
			//获取id属性
			Attribute id = e.attribute("id");
			System.out.println(id.getName()+ "=" + id.getValue());
			//获取student的子元素
			Element name = e.element("name");
			Element course = e.element("course");
			Element score = e.element("score");
			System.out.println(name.getName()+ "=" + name.getStringValue());
			System.out.println(course.getName()+ "=" + course.getText());
			System.out.println(score.getName()+ "=" + score.getText());
			System.out.println("----------------------------------");
		}
		
	}
}
发布了81 篇原创文章 · 获赞 18 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43542074/article/details/102809430