sax解析演示示例

sax解析个人感觉是非常麻烦的,但是是sun公司的标准,所以还是必须得学习:示例代码有两个功能,一个是列出所有的标签和标签的值,一个是列出你想要的标签的值
xml文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?><persons>

<person>

<name>wuyihua</name>

<grade>98</grade>

<id>1</id></person>

<person job="student">

<name>zengxiangjian</name>

<grade>100</grade>

<id>3</id></person>

</persons>





解析类:

package com.saxparser.domain;

 

import javax.sql.rowset.spi.XmlReader;

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.XMLReader;

import org.xml.sax.helpers.DefaultHandler;

 

public class Demo1 {

 

/**

* @param args

* @throws Exception

* @throws ParserConfigurationException

*/

public static void main(String[] args) throws ParserConfigurationException,

Exception {

SAXParserFactory fa = SAXParserFactory.newInstance();// 得解析工厂

SAXParser parser = fa.newSAXParser();// 得解析器

XMLReader reader = parser.getXMLReader();// 得到数据

reader.setContentHandler(new ListHandler());// 设置解析器,解析器要自己写;

reader.parse("src/person.xml");// 获取xml文档内容

}

 

}

 

class ListHandler extends DefaultHandler {

private String current;// 记录现在的标签

private String needTag;// 记录你想要的标签

private int currentNum;// 记录现在是第几个标签

private String tagValue;

 

@Override

public void startElement(String uri, String localName, String qName,

Attributes attributes) throws SAXException {

System.out.println("<" + qName + ">");// 打印所有的开始标签

 

current = qName;

 

for (int i = 0; i < attributes.getLength() && attributes != null; i++) {// for遍历所有的属性

System.out.println(attributes.getValue(i));

 

}

super.startElement(uri, localName, qName, attributes);

}

 

@Override

public void characters(char[] ch, int start, int length)

throws SAXException {

if ("name".equals(current)) {//这里我想获取第一个name标签的值

needTag = current;

tagValue = new String(ch, start, length);

System.err.println(tagValue);// 用err来标记想要的标签的值

}

System.out.println(new String(ch, start, length));// 打印所有的标签的值

super.characters(ch, start, length);

}

 

@Override

public void endElement(String uri, String localName, String qName)

throws SAXException {

current = null;

System.out.println("</" + qName + ">");// 打印结束标签的名称

super.endElement(uri, localName, qName);

}

 

}




成果网图片

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值