Java 5---xml的使用与解析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37527943/article/details/84850447

导读

1.xml简介
2.xml解析

xml简介

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在ecplise中使用xml

也可以在other->搜索xml,选择xml file
在这里插入图片描述
要将后缀定义为.xml
在这里插入图片描述

在open with中选择xml Editor,如果没有,在other中查看,如果还没有,那就是没有配置
在这里插入图片描述

xml解析

在这里插入图片描述

在这里插入图片描述

SAX解析XML

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

实例

在这里插入图片描述

stus_info.xml

<?xml version="1.0" encoding="UTF-8"?>
<students>
	<student>
		<id>1</id>
		<name>小明</name>
		<sex>男</sex>
		<age>18</age>
	</student>
	<student id="2">
		<name>小红</name>
		<sex>女</sex>
		<age>19</age>	
	</student>
</students>

Student.java

package com.hala.xml;

public class Student {
	
	private int id;
	private String name;
	private int age;
	private String sex;
	
	
	
	public Student() {
		super();
	}



	public Student(int id, String name, int age, String sex) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
		this.sex = sex;
	}



	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 int getAge() {
		return age;
	}



	public void setAge(int age) {
		this.age = age;
	}



	public String getSex() {
		return sex;
	}



	public void setSex(String sex) {
		this.sex = sex;
	}



	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + ", age=" + age + ", sex=" + sex + "]";
	}
	
	
	
	

}

MyHandler.java

package com.hala.xml;

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

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

public class MyHandler extends DefaultHandler {
	
	//用来装处理好的学生类对象
	private List<Student> list;
	//保存刚创建的学生对象
	private Student stu;
	//记录标签名
	private String tagName;
	
	
	

	public List<Student> getList() {
		return list;
	}

	@Override
	public void startDocument() throws SAXException {
		System.out.println("开始文档");
		list=new ArrayList<>();
	}

	@Override
	public void endDocument() throws SAXException {
		System.out.println("结束文档");
	}

	
	/**
	 * qName:标签名
	 * attributes:属性
	 */
	@Override
	public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
		System.out.println("开始元素");
		if(qName.equals("student")){
			stu=new Student();
		}
		//记录这个开始标签
		tagName=qName;
	}

	@Override
	public void endElement(String uri, String localName, String qName) throws SAXException {
		System.out.println("结束元素");
		if(qName.equals("student")){
			list.add(stu);
			stu=null;
		}
		
		tagName=null;
	}

	/**
	 * ch:用数组表示的内容
	 * start:内容开始位置
	 * length:内容的长度
	 */
	@Override
	public void characters(char[] ch, int start, int length) throws SAXException {
		System.out.println("处理内容");
		//去掉空格后转化为字符串
		String content=new String(ch,start,length).trim();
		if(!content.equals("")){
			if(tagName.equals("id")){
				stu.setId(Integer.valueOf(content));
			}else if(tagName.equals("name")){
				stu.setName(content);
			}else if(tagName.equals("age")){
				stu.setAge(Integer.parseInt(content));
			}else if(tagName.equals("sex")){
				stu.setSex(content);
			}
		}
		
	}
	
	

}

SAXParserDemo.java

package com.hala.xml;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;

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

import org.xml.sax.SAXException;

public class SAXParserDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		List<Student> list=parse("stus_info.xml");
		for(Student stu:list){
			System.out.println(stu);
		}

	}
	
	
	/**
	 * 利用sax解析器解析文件
	 * @param path 文件路径
	 */
	public static List<Student> parse(String path){
		//1.获取SAX解析器工厂对象
		SAXParserFactory factory=SAXParserFactory.newInstance();
		//2.利用解析器工厂对象获取解析器对象
		try {
			SAXParser parser=factory.newSAXParser();
			//3.解析
			MyHandler handler=new MyHandler();
			parser.parse(new FileInputStream(path),handler);
			//获取集合
			return handler.getList();
		
		} catch (ParserConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SAXException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;

		
	}

}

猜你喜欢

转载自blog.csdn.net/qq_37527943/article/details/84850447
今日推荐