首页 > 学院 > 开发设计 > 正文

jaxp通过sax方式解析xml文件

2019-11-08 01:07:39
字体:
来源:转载
供稿:网友

简述:

sax解析为事件驱动,我们通过继承DefaultHandler这个类,覆写其中的三个方法,startElement(),endElement(),character(),这三个方法,会随着sax解析自动执行,例如startElement()方法,解析到开始标签时,会自动启动。

xml文件如下:

(p1.xml)

<?xml version="1.0" encoding="UTF-8"?><person > <p1> <name>AAA</name> <age>20</age> </p1> <p1> <name>BBB</name> <age>99</age> </p1></person>

java代码

MyDefault1类:把整个XML文件输出到屏幕 Mydefault2类:获取全部name标签的值

package xxy.testJaxp.sax;import java.io.IOException;import javax.xml.parsers.ParserConfigurationException;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;/** * @author 许湘扬 2017-2-21 * @说明 使用jaxp对xml进行进行sax解析 */public class testJaxp { public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException { //1、创建解析工厂 SAXParserFactory saxParseFactory=SAXParserFactory.newInstance(); //2、创建解析器 SAXParser saxParser=saxParseFactory.newSAXParser(); //3、执行parse方法 saxParser.parse("src/p1.xml", new MyDefault1()); saxParser.parse("src/p1.xml", new Mydefault2()); }}/* * 继承DefaultHandler类,来实现xml文件的输出到屏幕 */class MyDefault1 extends org.xml.sax.helpers.DefaultHandler{ public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { System.out.PRint("<"+qName+">"); } public void characters(char[] ch, int start, int length) throws SAXException { System.out.print(new String(ch,start,length)); } public void endElement(String uri, String localName, String qName) throws SAXException { System.out.print("</"+qName+">"); }}/* * 继承DefaultHandler类,来实现获得所有name元素的值 */class Mydefault2 extends DefaultHandler{ //判断位,保证只输出name标签的值 boolean flag=false; public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if (qName.equals("name")) flag=true; } public void characters(char[] ch, int start, int length) throws SAXException { if (flag==true) System.out.println(new String(ch,start,length)); } public void endElement(String uri, String localName, String qName) throws SAXException { if (qName.equals("name")) flag=false; }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表