java学习第二十八天之XML解析
来源:互联网 发布:ubuntu创建新用户组 编辑:程序博客网 时间:2024/05/05 20:26
其一
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;//删除一个学生元素 001public 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 femalepublic 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(); } }}
0 0
- java学习第二十八天之XML解析
- Java学习总结第二十八天Java泛型(一)
- python爬虫学习第二十八天
- JAVA 攻城狮 第二十八天
- 第二十八天
- 第二十八天
- java学习第二十七天html&css、xml
- 传智博客JAVA基础第二十八天
- Java学习之---DOM解析XML
- java解析xml之xstream学习
- 学习Unity3D第八天之综合例题解析2
- 第二十八天:听课笔记
- 第二十八天:总结
- 实习篇---第二十八天
- 第二十八天Notification
- 毕业设计第二十八天
- 连续总结第二十八天
- Java学习第二十天
- 二维码的生成与扫描
- C++继承
- freemarker Velocity获取request,session
- 强制不换行
- ORACLE 数组\集合使用
- java学习第二十八天之XML解析
- 并发--先行发生原则及案例分析
- 201609-2火车购票
- 【编程】常见概念的理解 —— inplace、vanity url、vanilla(code/software)、编译、链接、build、(delegate、proxy)
- 代码阅读:Faster RCNN
- JavaScript设计模式
- Robot Framework环境搭建(汇总)
- VS2010配置eigen
- LR-性能-windows Resources设置