当前位置: 首页 > news >正文

使用SAX解析XML (控制台程序)

 

<!-- -------------------------------------------XML文件-------------------------------------------------- -->

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

<Students>
<Student id="11">
   <name>吴松</name>
   <score>480</score>
</Student>

<Student id="12">
   <name>鲁智深</name>
   <score>400</score>
</Student>

<Student id="13">
   <id>333</id>
   <name>盘今年</name>
   <score>600</score>
</Student>
</Students>
/* ***********************************************Java Bean********************************************** */

package com.zhouguihua.bean;

public class StudentBean
{
private int id;
private String name;
private float score;


public StudentBean()
{

}


public StudentBean(int id, String name, float score)
{
   this.id = id;
   this.name = name;
   this.score = score;
}


public int getId()
{
   return id;
}
public void setId(int id)
{
   this.id = id;
}
public String getName()
{
   return name;
}
public void setName(String name)
{
   this.name = name;
}
public float getScore()
{
   return score;
}
public void setScore(float score)
{
   this.score = score;
}

}
/* ***********************************************解析工厂********************************************** */

package com.zhouguihua.sax;

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

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

import com.zhouguihua.bean.StudentBean;

public class StudentHandler_in extends DefaultHandler
{
//定义集合
private List<StudentBean> list = null;
//定义变量
private String value = null;
//创建类对象
private StudentBean bean = null;

//空参构造
public StudentHandler_in()
{
   //初始化集合
   this.list = new ArrayList<StudentBean>();
}

//集合的访问器
public List<StudentBean> getList()
{
   return list;
}

/**
* 遇到根目录开始节点时触发s
*/
@Override
public void startDocument() throws SAXException
{
   System.out.println("开始解析!");
}

/**
* 遇到元素节点时触发
*/
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException
{
   if("Student".equals(qName))
   {
    //初始化bean
    this.bean = new StudentBean();
    //取出属性
    //this.bean.setId(Integer.parseInt(attributes.getValue("学号")));
    //this.bean.setName(attributes.getValue("姓名"));
    //this.bean.setScore(Float.parseFloat(attributes.getValue("成绩")));
   
    this.bean.setId(Integer.parseInt(attributes.getValue(0)));
   }
}

/**
* 扫描到文本时触发
*/
@Override
public void characters(char[] ch, int start, int length) throws SAXException
{
   //扫描到属性保存到成员Value中
   this.value = new String(ch,start,length);
}

/**
* 遇到元素节点结束时触发
*/
@Override
public void endElement(String uri, String localName, String qName) throws SAXException
{
   if("name".equals(qName))
   {
    this.bean.setName(this.value);
   }
   else if("score".equals(qName))
   {
    this.bean.setScore(Float.parseFloat(this.value));
   }
   else if("Student".equals(qName))
   {
    //将对象添加到集合
    this.list.add(bean);
   }
}

/**
* 遇到根目录节点结束时触发
*/
@Override
public void endDocument() throws SAXException
{
   System.out.println("结束解析!");
}
}
/* ***********************************************测试类********************************************** */

package com.zhouguihua.test;

import java.util.List;

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


import com.zhouguihua.bean.StudentBean;
import com.zhouguihua.sax.StudentHandler_in;

public class StudentTest_in
{

/**
* @param args
*/
public static void main(String[] args)
{
   //路径
   String uri = "src/sutdent_in.xml";
   //获取解析助手
   StudentHandler_in handler = new StudentHandler_in();
   //创建解析工厂
   SAXParserFactory factory = SAXParserFactory.newInstance();
   try
   {
    //获取解析器
    SAXParser work = factory.newSAXParser();
    //调用方法
    work.parse(uri, handler);
    //创建集合,接收
    List<StudentBean> list = handler.getList();
    if(list.size() > 0)
    {
     for(StudentBean bean:list)
     {
      System.out.println("学号为:"+bean.getId());
      System.out.println("姓名为:"+bean.getName());
      System.out.println("成绩为:"+bean.getScore());
      System.out.println("--------------------------------------");
     }
    }
   }
   catch(Exception e)
   {
    System.out.println("error"+e.getMessage());
   }
}

}

相关文章:

  • PMI列子1
  • 一个简单实用的AJAX例子
  • VS使用技巧
  • 一个最简单的AJAX实例及解析
  • 静态库中有图片,改如何存放呢??
  • 用Java结合SAX 2.0 解析XML文档
  • HDU 2594 Simpsons’ Hidden Talents(辛普森一家的潜在天赋)
  • 在Dom4j中使用xpath
  • C# 文件与目录的基本操作(System.IO)
  • 在JavaScript中使用Java
  • Postgresql 同步流复制
  • ??在JSP中,java和JavaScript如何交互?
  • 在Struts应用中使用Ajax
  • jQuery计算文本宽度和input标签根据输入字符动态自适应宽度的实现
  • Eclipse 3.2.2 安装、汉化和插件配置
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 【刷算法】求1+2+3+...+n
  • CentOS6 编译安装 redis-3.2.3
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • IP路由与转发
  • JavaWeb(学习笔记二)
  • MySQL数据库运维之数据恢复
  • node入门
  • Python利用正则抓取网页内容保存到本地
  • React-生命周期杂记
  • vue-cli在webpack的配置文件探究
  • XForms - 更强大的Form
  • 笨办法学C 练习34:动态数组
  • 回顾 Swift 多平台移植进度 #2
  • 那些年我们用过的显示性能指标
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 赢得Docker挑战最佳实践
  • Prometheus VS InfluxDB
  • $$$$GB2312-80区位编码表$$$$
  • (pojstep1.1.2)2654(直叙式模拟)
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (一)SpringBoot3---尚硅谷总结
  • (一)基于IDEA的JAVA基础1
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .NET CLR Hosting 简介
  • .Net IOC框架入门之一 Unity
  • .Net Remoting(分离服务程序实现) - Part.3
  • .net(C#)中String.Format如何使用
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .NET学习教程二——.net基础定义+VS常用设置
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • []FET-430SIM508 研究日志 11.3.31
  • [Angular] 笔记 21:@ViewChild
  • [BZOJ2850]巧克力王国
  • [cocos2d-x]关于CC_CALLBACK
  • [hdu4622 Reincarnation]后缀数组
  • [JavaScript]_[初级]_[关于forin或for...in循环语句的用法]