XML文件

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

	<bookstore>
		<book id="1">
			<name>冰与火之歌</name>
			<author>乔治马丁</author>
			<year>2014</year>
			<price>89</price>
		</book>
		<book id="2">
			<name>安徒生童话</name>
			<year>2004</year>
			<price>77</price>		
			<language>English</language>
		</book>
	</bookstore>

handler.java类

package xmltes;

import javax.xml.stream.events.Characters;
import javax.xml.stream.events.StartElement;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;


public class handler extends DefaultHandler{
    private static int bookNum = 0;
    //遍历xml文件的开始标签
    @Override
    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
        // 调用DefaultHandler父类的startElement方法
        super.startElement(uri, localName, qName, attributes);
        
        //判断是不是有属性的标签/如book
        if(qName.equals("book")){
            bookNum++;
            System.out.println("====================开始遍历第"+bookNum+"书的内容================");
            //开始解析book元素
            //已知book元素下属性的名称,可以根据名称判断
           /* String value = attributes.getValue("id");
            System.out.println("book的属性值是" + value);*/
            //如果不知道数的属性名称
            int num = attributes.getLength();
            
            for(int i=0;i<num;i++){
                System.out.println("书的第" + (i+1) + "个属性名是:"+attributes.getQName(i)+"===属性值是:" + attributes.getValue(i));
            }
            
        }else if(!qName.equals("book") && !qName.equals("bookstore") ){
            System.out.println("节点名是:" + qName);
        }
        
        
        
        
    }
    //遍历xml文件的结束标签
    @Override
    public void endElement(String uri, String localName, String qName) throws SAXException {
        // TODO Auto-generated method stub
        super.endElement(uri, localName, qName);
        //判断这本书是否遍历结束
        if(qName.equals("book")){
            System.out.println("====================结束遍历第"+bookNum+"书的内容================");
        }
    }
    
    @Override
    public void characters(char[] ch, int start, int length) throws SAXException {
        // TODO Auto-generated method stub
        super.characters(ch, start, length);
        String value = new String(ch, start, length);
        if(!value.trim().equals("")){
            System.out.println(value);
        }
    }
    
    //用来标识解析开始
    @Override
    public void startDocument() throws SAXException {
        // TODO Auto-generated method stub
        super.startDocument();
//        System.out.println("进入标识解析开始方法");
    }
    
    //用来标识解析结束
    @Override
    public void endDocument() throws SAXException {
        // TODO Auto-generated method stub
        super.endDocument();
//        System.out.println("进入标识解析结束方法");
    }
    
}

Test类

package xmltes;

import java.io.IOException;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.SAXException;


public class SAXTest {
    public static void main(String[] args) {
        try {
            //获取一个SAXParserFactory的实例
            SAXParserFactory factory = SAXParserFactory.newInstance();
            //通过factory获取SAXParser实例
            SAXParser parser = factory.newSAXParser();
            //创建一个SAXParserHandler对象
            handler handler = new handler();
            parser.parse("001.xml", handler);
        } catch (ParserConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

以上就是XML文件使用SAX方法读取的示例代码的详细内容,更多请关注php中文网其它相关文章!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

  • 相关标签:XML,SAX
  • 程序员必备接口测试调试工具:点击使用

    Apipost = Postman + Swagger + Mock + Jmeter

    Api设计、调试、文档、自动化测试工具

    网页生成APP,用做网站的技术去做APP:立即创建

    手机网站开发APP、自助封装APP、200+原生模块、2000+映射JS接口按需打包

    • 上一篇:详细介绍XML原理代码实例
    • 下一篇:XML文件使用DOM方法读取的示例代码

    相关文章

    相关视频


    • 使用xmlhttp为网站增加域名查询功能的示例代码...
    • 四种XML解析方式详解
    • 基于PHP对XML的操作详解
    • XML和Tomcat的入门知识的详细介绍
    • XML文件使用SAX方法读取的示例代码
    • Vue3 事件修饰符
    • vue3 指令
    • vue3 基础语法
    • vue3 组合api和选项api介绍

    视频教程分类

    • php视频教程
    • html视频教程
    • css视频教程
    • JS视频教程
    • jQuery视频教程
    • mysql视频教程
    • Linux视频教程
    • Python视频教程
    • Laravel视频教程
    • Vue视频教程

    专题

    XML文件使用SAX方法读取的示例代码