欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

xml的解析模式

更新时间: 2014-01-05 02:02:09 责任编辑: Author_N1

 

xml的解析方式
   解析xml有四种方法:DOM,SAX,DOM4j,JDOM.
     我们主要学了两种:DOM和SAX.
     DOM适于解析比较简单的XML而SAX则适于解析较复杂的XML文件。各有各的好。

     DOM和SAX的不同:
     1. DOM是基于内存的,不管文件有多大,都会将所有的内容预先装载到内存中。从而消耗很大的内存空间。而SAX是基于事件的。当某个事件被触发时,才获取相应的XML的部分数据,从而不管XML文件有多大,都只占用了少量的内存空间。
     2. DOM可以读取XML也可以向XML文件中插入数据,而SAX却只能对XML进行读取,而不能在文件中插入数据。这也是SAX的一个缺点。
     3.SAX的另一个缺点:DOM我们可以指定要访问的元素进行随机访问,而SAX则不行。SAX是从文档开始执行遍历的。并且只能遍历一次。也就是说我们不能随机的访问XML文件,只能从头到尾的将XML文件遍历一次(当然也可以中间截断遍历)。


Dom解析

example1.xml



ParseXmlwithSAX.java
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import static java.lang.System.*;
public class ParseXmlwithSAX {
	public static void main(String[] args) throws Exception {
		SAXParserFactory fact=SAXParserFactory.newInstance();
		SAXParser parser=fact.newSAXParser();
		DefaultHandler dh=new MyHandler();
		parser.parse("example2.xml",dh);
	}
}
class MyHandler extends DefaultHandler{
	public void characters(char[] cs, int start, int length) throws SAXException {
		String str=new String(cs,start,length).trim();
		if (str.length()==0) return;
		out.println("处理文本 "+str);
	}
	public void endDocument() throws SAXException {
		out.println("文档结束");
	}
	public void endElement(String uri, String localName, String qName) throws SAXException {
		out.println("标记结束 "+qName);
	}
	public void startDocument() throws SAXException {
		out.println("文档开始");
	}
	public void startElement(String uri, String localName, String qName, Attributes as) throws SAXException {
		out.println("标记开始 "+qName);
		if (as.getLength()!=0) {
			String value=as.getValue("name");
			out.println("name="+value);
		}

	}
	
}



控制台输出:
文档开始
标记开始 Root
标记开始 Teacher1
name=Liucy
处理文本 C++
标记结束 Teacher1
标记开始 Teacher2
name=Huxz
处理文本 Java
标记结束 Teacher2
标记结束 Root
文档结束
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:02:09
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/4829/
本文WWW.DOC100.NET DOC100.NET版权所有。