XML入门:使用Jaxp的sax方式操作xml

sax方式不能实现增删改查,只能做查询操作

----打印出整个文档 p.xml

<?xml version="1.0" encoding="UTF-8"?>
<person>
  <p>
     <name> zhangan </name>
     <age> 20 </age>
  </p>
  <p>
     <name> lisi </name>
     <age> 20 </age>
  </p>
</person>

-----执行parse方法,第一个参数xml路径,第二个参数 是事件处理器

----------创建一个类,继承事件处理器类  重写里面的三个方法

 

---获取到所有name元素的值

package cn.xtnotes.d6;

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;


public class Sax {

	public static void main(String[] args) throws Exception {
		/*
		 * 1.创建解析器工厂
		 * 2.创建解析器
		 * 3.执行parse方法
		 * 
		 * 4.自己创建一个类,继承DefaultHandler
		 * 5.重要类里面的三个方法
		 */
		//创建解析器工厂
		SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
		//创建解析器
		SAXParser saxParser = saxParserFactory.newSAXParser();
		//执行parse方法
		saxParser.parse("src/cn/xtnotes/d6/p.xml", new MyDefault2());
	}

}
//实现获取所有name元素的值
class MyDefault2 extends DefaultHandler{

	boolean flag = false;
	@Override
	public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
		// TODO Auto-generated method stub
		super.startElement(uri, localName, qName, attributes);
		//判断qname是否为name元素
		if("name".equals(qName)){
			flag = true;
		}
	}

	@Override
	public void characters(char[] ch, int start, int length) throws SAXException {
		// TODO Auto-generated method stub
		super.characters(ch, start, length);
		//当flag为true的时候,表示解析到name元素
		if(flag == true) {
			System.out.println(new String(ch,start,length));
		}
	}
	
	@Override
	public void endElement(String uri, String localName, String qName) throws SAXException {
		// TODO Auto-generated method stub
		super.endElement(uri, localName, qName);
		//falg 变成false  表示name元素结束
		if("name".equals(qName)){
			flag = false;
		}
	}

}



//打印文档所有内容
class MyDefault1 extends DefaultHandler{

	@Override
	public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
		// TODO Auto-generated method stub
		super.startElement(uri, localName, qName, attributes);
		System.out.println("<"+qName+"/>");
	}

	@Override
	public void characters(char[] ch, int start, int length) throws SAXException {
		// TODO Auto-generated method stub
		super.characters(ch, start, length);
		System.out.println(new String(ch,start,length));
	}
	
	@Override
	public void endElement(String uri, String localName, String qName) throws SAXException {
		// TODO Auto-generated method stub
		super.endElement(uri, localName, qName);
		System.out.println("<"+qName+"/>");
	}
}

saxParser.parse("src/cn/xtnotes/d6/p.xml", new MyDefault1());   :

执行结果:

<person/>

  
<p/>

     
<name/>
 zhangan 
<name/>

     
<age/>
 20 
<age/>

  
<p/>

  
<p/>

     
<name/>
 lisi 
<name/>

     
<age/>
 20 
<age/>

  
<p/>


<person/>

 

saxParser.parse("src/cn/xtnotes/d6/p.xml", new MyDefault2());:

阅读剩余
THE END