手机
当前位置:查字典教程网 >编程开发 >Java >java解析xml之sax解析xml示例分享
java解析xml之sax解析xml示例分享
摘要:复制代码代码如下:packagecom.test;importjava.io.File;importjava.io.FileInputStr...

复制代码 代码如下:

package com.test;

import java.io.File;

import java.io.FileInputStream;

import java.util.ArrayList;

import java.util.List;

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 SaxXML {

public static void main(String[] args) {

File file = new File("e:/People.xml");

try {

SAXParserFactory spf = SAXParserFactory.newInstance();

SAXParser parser = spf.newSAXParser();

SaxHandler handler = new SaxHandler("People");

parser.parse(new FileInputStream(file), handler);

List<People> peopleList = handler.getPeoples();

for(People people : peopleList){

System.out.println(people.getId()+"t"+people.getName()+"t"+people.getEnglishName()+"t"+people.getAge());

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

class SaxHandler extends DefaultHandler {

private List<People> peoples = null;

private People people;

private String currentTag = null;

private String currentValue = null;

private String nodeName = null;

public List<People> getPeoples() {

return peoples;

}

public SaxHandler(String nodeName) {

this.nodeName = nodeName;

}

@Override

public void startDocument() throws SAXException {

// TODO 当读到一个开始标签的时候,会触发这个方法

super.startDocument();

peoples = new ArrayList<People>();

}

@Override

public void endDocument() throws SAXException {

// TODO 自动生成的方法存根

super.endDocument();

}

@Override

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

Attributes attributes) throws SAXException {

// TODO 当遇到文档的开头的时候,调用这个方法

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

if (name.equals(nodeName)) {

people = new People();

}

if (attributes != null && people != null) {

for (int i = 0; i < attributes.getLength(); i++) {

if(attributes.getQName(i).equals("id")){

people.setId(attributes.getValue(i));

}

else if(attributes.getQName(i).equals("en")){

people.setEnglishName(attributes.getValue(i));

}

}

}

currentTag = name;

}

@Override

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

throws SAXException {

// TODO 这个方法用来处理在XML文件中读到的内容

super.characters(ch, start, length);

if (currentTag != null && people != null) {

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

if (currentValue != null && !currentValue.trim().equals("") && !currentValue.trim().equals("n")) {

if(currentTag.equals("Name")){

people.setName(currentValue);

}

else if(currentTag.equals("Age")){

people.setAge(currentValue);

}

}

}

currentTag = null;

currentValue = null;

}

@Override

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

throws SAXException {

// TODO 在遇到结束标签的时候,调用这个方法

super.endElement(uri, localName, name);

if (name.equals(nodeName)) {

peoples.add(people);

}

}

}

【java解析xml之sax解析xml示例分享】相关文章:

Java parseInt解释加方法示例

java dom4j解析xml文件代码实例分享

java数据库操作类演示实例分享(java连接数据库)

java使用dom4j操作xml示例代码

java使用rmi传输大文件示例分享

java设计模式之装饰模式详细介绍

java枚举的使用示例

java中的key接口解析

java裁剪图片并保存的示例分享

java解析xml常用的几种方式总结

精品推荐
分类导航