SAX方式解析xml步骤
1.通过SAXParserFactory的静态newInstance()方法获取一个SAXParserFactory的对象。
2.通过SAXParserFactory对象的newSAXParser()方法返回一个SAXParser类的对象。
3.创建一个类继承DefaultHandler,重写其中的一些方法并创建类的实例.
4.通过SAXParser类的Parse(Stringname,df)方法解析xml文件,参数Stringname为路径名,df为继承于DefaultHandler类的实例化对象,不需要定义变量存储返回的类型.
SAX是按节点顺序进行解析,遇到xml的声明即开始解析,遇到最后一个节点的尾节点便结束解析,需要用户自己定义一个类继承于DefaultHandler类来解析,遇到开始标签节点便通过startElement开始解析节点,遇到结束标签节点便通过endElement结束解析,再遇到开始节点继续通过startElement解析,一直循环直到xml文件最后的结束标签节点.
5.在继承于DefaultHandler这个类中需要重写父类的startElement()和endElement()方法,来进行开始节点与结束节点的解析,再重写startDocument()方法与endDocument()方法来标识解析的开始与结束.
startElement、endElement 方法对应xml的开始标签和结束标签解析
重写startElement、endElement方法。
重写startDocument() endDocument() 标识解析开始结束的方法
SAX解析:
SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newSAXParser(); //该类是继承了DefaultHandler的自定义类,通过重写其中的方法,实现整个解析过程要执行的操作 SAXParserHandler handler = new SAXParserHandler(); parser.parse("book.xml",handler);
SAX解析原理
通过自己创建的Handler处理类,去逐个分析遇到的每一个节点,从外层到里层
startElement endElement
1.通过SAXParserFactory的静态newInstance()方法获取SAXParserFactory实例factory
2.通过SAXParserFactory实例的newSAXParser()方法返回SAXParser实例parser
3.创建一个类继承DefaultHandler,重写其中的一些方法进行业务处理并创建这个类的实例handler
//SAX解析XML文件
SAXParserFactory spf=SAXParserFactory.newInstance();
SAXParser sp=spf.newSAXParser();
sp.parse("url",Handler对象);
//Handler对象需要自己创建且继承defaultHandler类;
获取一个SAXParserFactory的实例:SAXParserFactor factory=SAXParseFactory.newInstance();
通过factory获取SAXParse实例:SAXParse parser=factory.newSAXParse();
创建一个类继承DefaultHandler,重写其中一些方法进行业务处理并创建这个类的实例handler:重写startElement方法和endElement方法
创建SAXParserHandler对象:SAXParserHandler handler=new SAXParserHandler();
parser.parse(String,DefaultHandler)
DOM 整个加载到内存中。
SAX 自己创建了handler处理类,逐个分析遇到的每个节点
SAXParserHandler 标记xml文档开始的标签
endElement 标记结束标签
ALT+/ (加上代码的补全)
DOM:全部读取先
SAX解析:通过handler处理类逐个分析每个节点,从外到内逐个解析。。一个一个来
startElement, endElement(开始标签解析,结束标签解析)
步骤:
1.通过SAXParserFactory的静态newInstance()方法获取SAXParserFactory实例factory
SAXParserFactory factory = SAXParserFactory.newInstance();
2.通过SAXParserFactory实例的newSAXParser()方法返回SAXParser实例parser
SAXParser parser = factory.newSAXParser();
parser.parse("路径",handler类型对象);(需创建见3)
3.创建一个类继承DefaultHandler,重写其中一些方法进行业务处理并创建这个类的实例handler
创建一个package继承DefaultHandler(。com那个)
startElement()
用于遍历xml的开始标签
endElement()
遍历xml结束标签
startElement
解析开始
endElement
解析结束
SAX解析xml步骤
1.通过SAXParseFactory的静态newInstance()方法获取SAXParserFactory实例factory
2.通过SAXParserFactory实例的newSAXParser()方法返回SAXParser实例parser
3.创建一个类继承DefaultHandle,重写方发进行业务已处理创建这个类的实例handle
SAX解析原理
SAX方式解析xml步骤
1.通过SAXParserFactory的静态newInstance()方法获取一个SAXParserFactory的对象。
SAXParserFactory factory = SAXParserFactory.newInstance();
2.通过SAXParserFactory对象的newSAXParser()方法返回一个SAXParser类的对象。
SAXParser parser = factory.newSAXParser();
3.创建一个类继承DefaultHandler,重写其中的一些方法并创建类的实例.
类SAXParserHandler implements DefaultHandler;
4.通过SAXParser类的Parse(Stringname,df)方法解析xml文件,参数Stringname为路径名,df为继承于DefaultHandler类的实例化对象,不需要定义变量存储返回的类型.
SAX是按节点顺序进行解析,遇到xml的声明即开始解析,遇到最后一个节点的尾节点便结束解析,需要用户自己定义一个类继承于DefaultHandler类来解析,遇到开始标签节点便通过startElement开始解析节点,遇到结束标签节点便通过endElement结束解析,再遇到开始节点继续通过startElement解析,一直循环直到xml文件最后的结束标签节点.
5.在继承于DefaultHandler这个类中需要重写父类的startElement()和endElement()方法,来进行开始节点与结束节点的解析,再重写startDocument()方法与endDocument()方法来标识解析的开始与结束.
public class SAXParserHandler extends DefaultHandler {
/**
* 用来标识解析开始
*/
public void startDocument() throws SAXException {
super.startDocument();
System.out.println("SAX解析开始");
}
/**
* 解析xml元素节点开始
*/
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
super.startElement(uri, localName, qName, attributes);
System.out.println("解析xml元素开始");
}
/**
* 处理文本内容(获取的是整个XML文本内容)
*/
public void characters(char[] ch, int start, int length)
throws SAXException {
super.characters(ch, start, length);
System.out.println("文本处理中...");
}
/* 解析xml元素节点结束
*/
public void endElement(String uri, String localName, String qName)
throws SAXException {
super.endElement(uri, localName, qName);
System.out.println("解析xml元素结束");
}
/**
* 用来标识解析结束
*/
public void endDocument() throws SAXException {
super.endDocument();
System.out.println("SAX解析结束");
}
6.创建SAXParserHandler对象
SAXParserHandler handler = new SAXParserHandler()
7.调用parse(url,handler实例)方法
parser.parse("book.xml",handler);