其一
package stage3.htmlcss.demo;
public interface A {
public void show();
}
package stage3.htmlcss.demo;
public class Animal1 implements A{
public void show() {
System.out.println("这是第一个实现类!");
}
}
package stage3.htmlcss.demo;
public class Animal2 implements A{
public void show() {
System.out.println("这是第二个实现类!");
}
}
package stage3.htmlcss.demo;
import java.io.IOException;
public class Test {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
B a=BeanFactory.getBean(B.class);
a.show();
}
}
package stage3.htmlcss.demo;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
public class BeanFactory {
private static Properties properties =new Properties();
static{
// 1、读取配置文件
try {
properties.load(new FileInputStream("src/BeanFactory.properties"));
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
public static <T> T getBean( Class<T> c) throws IOException {
try {
//2、取出哪个类
String className=properties.getProperty(c.getSimpleName());
// 3、根据完整类名创建实例并返回
Class<T> class1=(Class<T>)Class.forName(className);
return class1.newInstance();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return null;
}
}
B=stage3.htmlcss.demo.Bnimal1
其二 调用不同的对象
package stage3.htmlcss.demo;
public interface B {
public void show();
}
package stage3.htmlcss.demo;
public class Bnimal1 implements B{
public void show() {
System.out.println("这是第一个实现类!");
}
}
jasp解析XML
package stage3.htmlcss.demo;
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
//import javax.xml.soap.Node;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class Demo1 {
/**
* 获得所有学生信息
* @param args
*1、获得jasp工厂
*2、通过工厂获得解析器实现类
*3、使用解析器加载xml文档 ===> document
*/
public static void main(String[] args) {
//获得jasp工厂
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
// 通过工厂获得解析器实现
try {
DocumentBuilder builder=factory.newDocumentBuilder();
// 使用解析器加载xml文档 ===>document
Document document=builder.parse(new File("src/students.xml"));
// 获得所有学生元素的集合
NodeList studentList=document.getElementsByTagName("student");
// 遍历集合
for (int i = 0; i < studentList.getLength(); i++) {
Element stuEle=(Element) studentList.item(i);
// 获得学生的number属性
String number =stuEle.getAttribute("number");
System.out.println("学生的学号是"+number);
// 获得学生节点下的所有子节点(包括文本在内一共7个)
NodeList children=stuEle.getChildNodes();
// 遍历集合并提取出我们想要的name,age,sex元素对象
for (int j = 0; j < children.getLength(); j++) {
Node node = (Node) children.item(j);
// 方式二
if(node.getNodeType()==Node.ELEMENT_NODE){
Element child=(Element) node;
if(child.getNodeName().equals("name")){
String name=child.getTextContent();
System.out.println("学生的姓名是"+name);
}else if(child.getNodeName().equals("age")){
String age=child.getTextContent();
System.out.println("学生的年龄是"+age);
}else if(child.getNodeName().equals("sex")){
String sex=child.getTextContent();
System.out.println("学生的性别是"+sex);
}
}
}
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
package stage3.htmlcss.demo;
import java.io.File;
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 Demo2 {
public static void main(String[] args) throws Exception {
// 获得解析器工厂类
SAXParserFactory factory=SAXParserFactory.newInstance();
// 获得解析器
try {
SAXParser parser=factory.newSAXParser();
parser.parse(new File("src/students.xml"), new Myhandler());
} catch (ParserConfigurationException | SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 解析文档
}
}
package stage3.htmlcss.demo;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
//获得所有学生信息并打印出来
public class Myhandler extends DefaultHandler{
@Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
System.out.println("文档开始解析啦!");
}
@Override
//参数3告诉开发者当前的元素时那个元素
// 参数4将标签上的属性提供给你
// SAX 1.0的版本中前两个参数没有用,永远是null
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
// TODO Auto-generated method stub
System.out.println("元素解析开始啦!");
// 判断当前元素遇到的元素是否是student元素
if(qName.equals("student")){
String number= attributes.getValue("number");
System.out.println("学生的学号是:"+number);
}
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
// TODO Auto-generated method stub
String strs=new String(ch, start, length);
strs=strs.trim();//去掉两端的空白字符 回车 空格 制表符
if (strs.length()>0) {
System.out.println(strs);
}
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
// TODO Auto-generated method stub
System.out.println(qName+"元素结束啦");
}
@Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
System.out.println("文档解析结束啦!");
}
}
students.xml
<?xml version="1.0" encoding="utf-8" ?>
<!--<!DOCTYPE students SYSTEM "students.dtd"> -->
<students>
<student number="001">
<name>小明</name>
<age>8</age>
<sex>男</sex>
</student>
<student number="002">
<name>小花</name>
<age>8</age>
<sex>女</sex>
</student>
</students>
DOM4j解析XML
package my.xmlparse.dom4j;
import java.io.File;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;
public class Demo1 {
public static void main(String[] args) {
SAXReader reader=new SAXReader();
try {
Document document=reader.read(new File("src/students.xml"));
System.out.println(document.asXML());//将document.asXML()由xml转成String类型
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package my.xmlparse.dom4j;
import java.io.File;
import java.util.Iterator;
import java.util.jar.Attributes.Name;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.omg.PortableInterceptor.AdapterManagerIdHelper;
//查询出所有学生的所有信息
public class Demo2 {
public static void main(String[] args) {
SAXReader reader=new SAXReader();
try {
Document document=reader.read(new File("src/students.xml"));
// 首先要获得根元素
Element root=(Element) document.getRootElement();
// 迭代根元素下的所有名叫student的子元素
for(Iterator<Element> iterator=root.elementIterator("student");iterator.hasNext();){
Element student=iterator.next();
// 获得student元素的number属性
String number=student.attributeValue("number");//获取的是元素的属性值
// student子元素的内容(Name,AdapterManagerIdHelper sex)
String name=student.elementText("name");
String age=student.elementText("age");
String sex=student.elementText("sex");
System.out.println("当前学生的学号是:"+number+",姓名是:"+name+",年龄是:,"+age+"性别是:"+sex);
}
// System.out.println(document.asXML());//将document.asXML()由xml转成String类型
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package my.xmlparse.dom4j;
import java.io.File;
import java.util.Iterator;
import java.util.List;
import java.util.jar.Attributes.Name;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.omg.PortableInterceptor.AdapterManagerIdHelper;
//查询出所有学生的所有信息
public class Demo2_2 {
public static void main(String[] args) {
SAXReader reader=new SAXReader();
try {
Document document=reader.read(new File("src/students.xml"));
// 首先要获得根元素
Element root=(Element) document.getRootElement();
// 迭代根元素下的所有名叫student的子元素
List<Element> list=root.elements("student");
for(Element student:list){
// Element student=iterator.next();
// 获得student元素的number属性
String number=student.attributeValue("number");//获取的是元素的属性值
// student子元素的内容(Name,AdapterManagerIdHelper sex)
String name=student.elementText("name");
String age=student.elementText("age");
String sex=student.elementText("sex");
System.out.println("当前学生的学号是:"+number+",姓名是:"+name+",年龄是:"+age+",性别是:"+sex);
}
// System.out.println(document.asXML());//将document.asXML()由xml转成String类型
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package my.xmlparse.dom4j;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.jar.Attributes.Name;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.omg.PortableInterceptor.AdapterManagerIdHelper;
//增加一个学生元素 003 小王八 2 男
public class Demo3 {
public static void main(String[] args) {
SAXReader reader=new SAXReader();
try {
Document document=reader.read(new File("src/students.xml"));
// 获得根元素
Element root=document.getRootElement();
// 添加element,添加number属性
Element stuEle=root.addElement("student").addAttribute("number", "003");
// 添加name age sex子元素并添加子元素中的文本
stuEle.addElement("name").addText("小王八");
stuEle.addElement("age").addText("2");
stuEle.addElement("sex").addText("男");
// 将document对象写到文件中
// 创建格式化器
OutputFormat format=OutputFormat.createPrettyPrint();
try {
format.setEncoding("utf-8");//改方法设置文档的encoding 方法
// 创建写入器
// XMLWriter writer=new XMLWriter(new FileWriter("src/students_copy.xml"),format);
// XMLWriter writer=new XMLWriter(new PrintWriter("src/students_copy.xml","utf-8"),format);
XMLWriter writer=new XMLWriter(new FileOutputStream("src/students_copy.xml"),format);//使用字节流绝对不会出现乱码
// 写入
writer.write(document);
// 关闭资源
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 添加name,age,sex子元素,并添加子元素中的文本
// 将dom对象写到文件中
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package my.xmlparse.dom4j;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.jar.Attributes.Name;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.omg.PortableInterceptor.AdapterManagerIdHelper;
//删除一个学生元素 001
public class Demo4 {
public static void main(String[] args) throws Exception, FileNotFoundException {
SAXReader reader=new SAXReader();
try {
Document document=reader.read(new File("src/students.xml"));
// 获得根元素
Element root=document.getRootElement();
// 使用xpath找到我们需要的元素
// 定义xpath
String xpath="//student[@number='001']";
Element student=(Element) document.selectSingleNode(xpath);
// 删除
boolean flag=student.getParent().remove(student);
System.out.println(flag);
// 可写
XMLWriter writer=new XMLWriter(new FileOutputStream("src/students_copy_2.xml"),OutputFormat.createPrettyPrint());
writer.write(document);
writer.close();
// 获得所有元素
/*
下面的思路可以但是效率太低
遍历
判断==>number属性是否为要删除的
是===>删除
不是
*/
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package my.xmlparse.dom4j;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.jar.Attributes.Name;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.omg.PortableInterceptor.AdapterManagerIdHelper;
//修改一个学生 001 ==>大黑 1 female
public class Demo5 {
public static void main(String[] args) throws Exception, FileNotFoundException {
SAXReader reader=new SAXReader();
try {
Document document=reader.read(new File("src/students.xml"));
// 1、定义xpath表达式
String xpath="//student[@number=001]";
// 2、定义xpath查找
Element studentEle=(Element) document.selectSingleNode(xpath);
// 3.修改student元素的子元素的name sex,age
studentEle.element("name").setText("大黑");
studentEle.element("age").setText("1");
studentEle.element("sex").setText("女");
// 回写
XMLWriter writer=new XMLWriter(new FileOutputStream("src/students_3.xml"),OutputFormat.createPrettyPrint());
writer.write(document);
writer.close();
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}