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());:
阅读剩余
版权声明:
作者:Tin
链接:http://www.tinstu.com/717.html
文章版权归作者所有,未经允许请勿转载。
THE END