解析xml(sap解析器)

来源:互联网 发布:医疗软件销售好做吗 编辑:程序博客网 时间:2024/05/11 22:27
package com.lesson30xml;

import java.util.ArrayList;
import java.util.List;

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

    public static void main(String[] args) {
        try {
            // 调用 读取xml文件函数
            readXml();
        } catch (Exception e) {
        }
    }

    public static void readXml() throws Exception {
        //实例化一个xml的sap解析器
        XMLReader sap = SAXParserFactory.newInstance().newSAXParser()
                .getXMLReader();
        //实例化一个操作 里面有开始 结束 内容
        MyHandle handle = new MyHandle();
        //取操作里面的内容
        sap.setContentHandler(handle);
        sap.parse("abc.xml");
        //输出操作的数据内容
        System.out.println(handle.getDataList());

    }

}
//操作里面包含开始 结束 内容
class MyHandle extends DefaultHandler {
    // new一个student的集合
    List<student> studentList = new ArrayList<student>();
    student stu;
    String readtag;
//开始
    public void startElement(String uri, String localName, String qName,
            Attributes atts) throws SAXException {
//输出开始的名
        System.out.println("begin" + localName + ":" + qName);
        readtag = qName;
        //如果读到开始的名字student时 就生成一个新的对象
        if (qName.equals("student")) {
            stu = new student();

        }

    }
//结束
    public void endElement(String uri, String localName, String qName)
            throws SAXException {
        System.out.println("end" + localName + ":" + qName);
        //如果
        if ("student".equals(qName)) {
            studentList.add(stu);
        }
        readtag = "";

    }
//内容
    public void characters(char[] ch, int start, int length)
            throws SAXException {
        System.out.println(new String(ch, start, length));
        //如果读到tel时 就 添加新的内容
        if (readtag.equals("tel")) {
            stu.tel = new String(ch, start, length);
        }
        //如果读到name时 内容给name
        if (readtag.equals("name")) {
            stu.name = new String(ch, start, length);
        }
    }
// 返回一个学生集合
    public List getDataList() {
        return studentList;
    }

}

class student {
    String name;
    String sex;
    String tel;

    public String toString() {
        return name + ":" + tel;
    }
}
0 0
原创粉丝点击