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