冰零0o的博客

小白的程序生涯

XML解析实现

XML的解析方式和解析器

  • 开发中比较常见的解析方式有两种,如下:

1、DOM:要求解析器把整个XML文档装载到内存,并解析成一个Document对象。

a) 优点:元素与元素之间保留结构关系,故可以进行增删改查操作。

b) 缺点:XML文档过大,可能出现内存溢出现象。

2、SAX:是一种速度更快,更有效的方法。它逐行扫描文档,一边扫描一边解析。并以事件驱动的方式进行具体解析,每执行一行,都将触发对应的事件。(了解)

a) 优点:处理速度快,可以处理大文件。

b) 缺点:只能读,逐行后将释放资源。

  • 解析器:就是根据不同的解析方式提供的具体实现。有的解析器操作过于繁琐,为了方便开发人员,又提供易于操作的解析开发包。
  • 常用的解析开发包:JAXP、JDom、jsoup、dom4j(常用)。


XML约束

常见的xml约束:DTD(dtd文件)、Schema(xsd文件)

用于约束xml文档,规定xml文档中元素的名称,子元素的名称及顺序,元素的属性等。


XML解析实现

1、导入jar包

dom4j-1.6.1.jar

2、准备需要解析的xml文件


3、编写解析代码

package com.xml.test;

import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;

public class TestXML {
	
	@Test
	public void testXML(){
		
		try {
			//1.创建解析器对象
			SAXReader reader = new SAXReader();
			//2.使用解析器加载web.xml文件得到document对象
			Document document = reader.read("src/com/xml/web.xml");
//			Document document = reader.read(new File("E:/eclipse/workspace/XML/src/com/xml/web.xml"));
			//3.获取根元素节点
			Element rootElement = document.getRootElement();
			//4.获取根元素下的子元素
			List<Element> elements = rootElement.elements();
			//也可以根据元素名称获取单一子元素节点
//			Element element = rootElement.element("servlet");
			//5.遍历所有子元素
			for (Element element : elements) {
				//6.判断元素名称为servlet的元素
				if(element.getName().equals("servlet")){
					//7.根据元素名称获取servlet-name元素
					Element element1 = element.element("servlet-name");
					Element element2 = element.element("servlet-class");
					//8.根据元素名称获取servlet-name的文本节点
					System.out.println(element1.getText());
					System.out.println(element2.getText());
				}
				
			}
			
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		
	}

}

阅读更多
个人分类: XML
想对作者说点什么? 我来说一句

dom4j 解析写入xml

2013年04月03日 6KB 下载

XML解析实例

2013年04月22日 41KB 下载

xmlbeans-2.5.0

2011年09月19日 3.27MB 下载

xml三种解析方法实现

2012年11月25日 83KB 下载

stax-api 1.0.1

2018年05月30日 21KB 下载

xml解析xml解析xml解析xml解析

2011年04月12日 2.7MB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭