JavaSE12

本文深入探讨了Java SE 12的关键更新,包括其增强的语法、性能提升以及开发者工具的改进。通过学习这些新特性,开发者可以更高效地利用Java进行软件开发。
package day12;

public class Emp {
	private int id;
	private String name;
	private int age;
	private char gender;
	private double salary;
	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 char getGender() {
		return gender;
	}
	public void setGender(char gender) {
		this.gender = gender;
	}
	public double getSalary() {
		return salary;
	}
	public void setSalary(double salary) {
		this.salary = salary;
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + age;
		result = prime * result + gender;
		result = prime * result + id;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		long temp;
		temp = Double.doubleToLongBits(salary);
		result = prime * result + (int) (temp ^ (temp >>> 32));
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Emp other = (Emp) obj;
		if (age != other.age)
			return false;
		if (gender != other.gender)
			return false;
		if (id != other.id)
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		if (Double.doubleToLongBits(salary) != Double.doubleToLongBits(other.salary))
			return false;
		return true;
	}
	@Override
	public String toString() {
		return "Emp [id=" + id + ", name=" + name + ", age=" + age + ", gender=" + gender + ", salary=" + salary + "]";
	}
	public Emp(int id, String name, int age, char gender, double salary) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
		this.gender = gender;
		this.salary = salary;
	}
	
	
}

package day12;

import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

/**
 * 解析web.xml文档中所有的<mime-mapping>
 * 在<mime-mapping>中元素<extension>的文本以存储到Map集合key中,
 * <mime-type>的文本存储到Map集合value中
 * 
 * 求:Map集合的长度,指定Map集合中的Key能够准去获取相对应的value
 * 
 * @author 臻冉
 *
 */
public class ParseWebXML {
	private static Map<String,String> mapping = new HashMap<String,String>();
	//解析web.xml
	private static void parseWeb(){
		
		
		try {
				SAXReader reader = new SAXReader();
				File file = new File("src/day12/web.xml");
				Document document = reader.read(file);
				//获取根标签
				Element root = document.getRootElement();
				//获取根标签下指定的子标签
				List<Element> list = root.elements("mime-mapping");
				list.forEach((e)->{
					String key = e.elementText("extension");
					String value = e.elementText("mime-type");
					mapping.put(key, value);
				});
				System.out.println("集合mapping的长度"+mapping.size());
		} catch (Exception e) {
		e.printStackTrace();
		}
	}
	
	//根绝Map集合中的Key查询对应的value
	private static String findByKey(String key){
		String value = mapping.get(key);
		return value;
	}
	
	public static void main(String[] args) {
		
		/*
		 * 思路:
		 * 1.创建map集合
		 * 2.解析web.xml
		 */
		parseWeb();
		String value = findByKey("xslt");
		System.out.println(value);
	}
}

package day12;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

/**
 * 使用DOM4J解析XML
 * DOM -Four- J
 * 
 * 将exp.xml文件中的所用员工信息解析出来存入集合中
 * 1.读取XML   用File读取   SarReader
 * 2.解析XML  dom
 * @author LENOVO
 *
 */
public class ParseXmlDemo {
	public static void main(String[] args) {
		List<Emp> list=new ArrayList<Emp>();
		/*
		 *解析流程;
		 *1.创建SAXReader
		 *2.使用SAXReader读取XML文档并生成Document对象
		 *	
		 *	这一步就是DOM解析,耗时资源的地方,因为会将当前
		 *XML文档解析为一颗“树状”结构并存入Document对象,那么
		 *内容越多内存消耗越多,并且要求读取完整XML文档,
		 *所以相对耗时,
		 *
		 *3.通过Document对象获取根元素(根标签)
		 *4.通过根元素开始逐级获取子元素,以达到遍历XML文档数据
		 *的目的
		 *
		 */
		//1
		SAXReader reader=new SAXReader();//当前解析数据最快的类
		
		//2 SAXReader提供了read()方法来读取xml文档返回一个
		//Cocument实例
		
		try {
			File file=new File("src/day12/emp.xml");
			Document doc=reader.read(file);
			
			//3.通过Document对象获取根元素(根标签)
			//getRootElement()  获取根标签  返回一个Element
			//Element的每一个实例用于表示XML文档中的一个元素(标签)
			//通过Element可以获取其表示的元素和相关信息
			/*
			 * Element element(String name)获取当前标签中指定名字
			 * 的子标签
			 * 
			 * List elements()获取当前标签中的所有子标签
			 * 
			 * List elements(String name)获取当前标签中所有指定名字的子标签
			 * 
			 * 
			 * String getName()获取当前元素的名字
			 * 
			 * String getText()获取当前元素中的文本(标签中间的文本)
			 */
			//获取根标签
			Element root=doc.getRootElement();
			
			//获取根标签下所有子标签
			List<Element> element=root.elements();
			System.out.println(element.size());
			
			element.forEach((e)->{
				//此处元素中没写文本,所以解析出来是空的
				//System.out.println(e.getName()+"的文本内容:"+e.getText());
			
				//获取员工的名字,提前是要获取<name>标签
				Element nameEle=e.element("name");
				//获取<name>标签中的文本
				String name=nameEle.getText();
				System.out.println(name);
				
				//获取员工的年龄
				Element ageEle=e.element("age");
				//将String转换为Int
				int age=Integer.parseInt(ageEle.getText());
				System.out.println(age);
				
				//获取员工的性别
				/*
				 * elementText(String name)直接获取标签中的文本
				 * 
				 */
				String str=e.elementText("gender");
				char gender=str.charAt(0);
				System.out.println(gender);
			
				//获取员工的薪资
				double salary=Double.parseDouble(e.elementText("salary"));
				System.out.println(salary);
				
				/*
				 * 获取id 
				 * Attribute attribute(String id)
					Attribute 提供了一个获取id的方法,
					getValue()返回字符串
				 */
				Attribute attr=e.attribute("id");
				int id=Integer.parseInt(attr.getValue());
				System.out.println("id:"+id);
				
				//解析后的属性存储到Emp中
				Emp emp=new Emp(id,name,age,gender,salary);
				list.add(emp);
			});
			
			/*//遍历集合,通过每个子元素<emp>标签获取对应
				//的员工信息
			for(Element e:element){
				//此处元素中没写文本,所以解析出来是空的
				//System.out.println(e.getName()+"的文本内容:"+e.getText());
			
				//获取员工的名字,提前是要获取<name>标签
				Element nameEle=e.element("name");
				//获取<name>标签中的文本
				String name=nameEle.getText();
				System.out.println(name);
				
				//获取员工的年龄
				Element ageEle=e.element("age");
				//将String转换为Int
				int age=Integer.parseInt(ageEle.getText());
				System.out.println(age);
				
				//获取员工的性别
				
				 * elementText(String name)直接获取标签中的文本
				 * 
				 
				String str=e.elementText("gender");
				char gender=str.charAt(0);
				System.out.println(gender);
			
				//获取员工的薪资
				double salary=Double.parseDouble(e.elementText("salary"));
				System.out.println(salary);
				
				
				 * 获取id 
				 * Attribute attribute(String id)
					Attribute 提供了一个获取id的方法,
					getValue()返回字符串
				 
				Attribute attr=e.attribute("id");
				int id=Integer.parseInt(attr.getValue());
				System.out.println("id:"+id);
				
				//解析后的属性存储到Emp中
				Emp emp=new Emp(id,name,age,gender,salary);
				list.add(emp);
			}*/
			
			
			System.out.println("解析完毕");
			list.forEach((s)->System.out.println(s));
			
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

package day12;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

/**
 * 使用dom4j生成一个xml文档
 * @author 臻冉
 *
 */
public class WriterXmlDemo {
	public static void main(String[] args) {
		List<Emp> list = new ArrayList<Emp>();
		list.add(new Emp(1,"张翠花",20,'女',12000.00));
		list.add(new Emp(2,"李狗蛋",21,'男',12001.00));
		list.add(new Emp(3,"王二蛋",23,'男',12002.00));
		list.add(new Emp(4,"孙尚香",19,'女',12003.00));
		list.add(new Emp(5,"廉颇",20,'男',12004.00));
		list.add(new Emp(6,"嬴政",20,'男',12005.00));
		list.add(new Emp(7,"荆轲",20,'男',12006.00));
		
		/*
		 * 生成一个XML文档的步骤
		 * 1.创建Document对象,表示一个空白对象
		 * 		DocumentHelper类提供了一个静态方法createDocument() 返回一个Document()实例
		 * 2.向Document中添加元素
		 * 3.向根标签中逐级添加子标签达到XML文档应有的树状结构
		 * 4.创建XMLWriter
		 * 5.将Document通过XMLWriter写出以生成XML文档
		 * 
		 */
		
		//1.创建Document对象————————添加根元素
		Document doc = DocumentHelper.createDocument();
		/*
		 * Document提供了添加元素的方法
		 * Element  addElement(String name)   添加指定名字的根元素,并以Element
		 * 实例形式将其返回,以便于继续对该元素操作
		 * 注意:这个方法只能调用一次
		 */
		//2.向Document中添加元素
		Element root = doc.addElement("list");
		System.out.println(root);
		
		//将每一个员工信息以一个<emp>标签添加到<list>标签中
		list.forEach((e)->{
			//3.
			//向<list>标签添加子标签<emp>
			Element empEle = root.addElement("emp");
			//向<emp>标签添加子标签<name>
			Element nameEle = empEle.addElement("name");
			//添加员工姓名——向<name>添加文本
			nameEle.addText(e.getName());
			
			//添加年龄
			Element ageEle = empEle.addElement("age");
			ageEle.addText(e.getAge()+"");
			
			//添加性别
			Element genderEle = empEle.addElement("gender");
			genderEle.addText(e.getGender()+"");
			
			//添加薪资
			Element  salaryEle= empEle.addElement("name");
			salaryEle.addText(e.getSalary()+"");
			
			//给<emp>标签添加属性id
			empEle.addAttribute("id",e.getId()+"");
			
		});
		
		//4.创建XML
		try {
			//美化XML格式
			OutputFormat of = OutputFormat.createPrettyPrint();
			FileOutputStream out = new FileOutputStream("src/day12/myEmp.xml");
			XMLWriter w = new XMLWriter(out,of);
			/*
			 * 	XMLWriter类中提供了一个方法writer(Document doc)
			 */
			w.write(doc);	
			System.out.println("写入完毕!");
			out.close();
			w.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

在这里插入代码片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值