Posted on 2009-07-09 13:20
eric_xu 阅读(190)
评论(0) 编辑 收藏 所属分类:
Java
DOM(Document Object Model)解析器读入的是一个完整的XML文档,然后将其转化为一个树形结构。适合数据量不大的解析。
Document对象是XML文档的树形结构在内存中的表现。
要读入一个文档,首先要一个DocumentBuilder对象,你可以从DocumentBuilderFactory工厂中得到。
DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
DocumentBuilder builder0020= factory.newDocumentBuilder();
File f = "xx.xml";
Document doc = builder.parse(f);
或是用一个url
URL u = ......
Document doc = builder.parse(u);
还可以是任意的输入流
InputStream in = .......
Document doc = builder.parse(in);
它有实现Node接口以及其它子接口的类对象构成。
可以调用getDocumentElement方法来分析文档内容,它将返回跟元素
Element root = doc.getDocumentElement();
String getTagName()返回元素的标签名。
NodeList getChildNodes()得到该元素的子元素,它将返回一个NodeList集合。
String getAttribute()返回属性值。
trim()把实际数据前后的空白字符删掉。
org.w3c.dom.Node
DTD和XML schema包含了用于解释文档是如何构成的规则。
SAX解析器是在解析XML输入的构件时就报告事件,但不会以任何方式存储文档,有事件处理器决定是否要建立数据结构,实际上,DOM解析器是在SAX解析器基础上建立起来的。
SAX解析时,需要一个处理器来解析,要实现ContentHandler
接口,他定义了很多回调方法。
startElement和endElement 在每当遇到起始或结束时各调用一次。
characters每当遇到字符时调用,
startDocument和endDocument分别在文档开始和结束时各调用一次。
SAXParserFactory saxfactory =
SAXParserFactory.newInstance();
SAXParser parser = saxfactory.newSAXParser();
parser.parse(source, handler); //source是要处理的文件,handler处理器的一个子类
defaultHandler实现了四个接口。
ContentHandler
DTDHandler
EntityResolver
ErrorHandler
public class DefaultHandler
implements EntityResolver, DTDHandler,
ContentHandler, ErrorHandler