zoukankan      html  css  js  c++  java
  • java基础 xml 使用dom4j解析 xml文件 servlet根据pattern 找到class

    package com.swift.kaoshi;
    
    import java.io.File;
    import java.util.List;
    import java.util.Scanner;
    
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    import org.junit.Test;
    
    /*
    <servlets>
        <servlet>
            <servlet-name>servlet1</servlet-name>
            <servlet-class>cn.itheima.servlets.MyServlet1</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>servlet1</servlet-name>
            <url-pattern>/s1</url-pattern>
        </servlet-mapping>
        <servlet>
            <servlet-name>servlet2</servlet-name>
            <servlet-class>cn.itheima.servlets.MyServlet2</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>servlet2</servlet-name>
            <url-pattern>/s2</url-pattern>
        </servlet-mapping>
    </servlets>
    
    二、编写程序,请按以下要求解析XML文件:
    1.    接收用户输入一个字符串,例如:”/s1”,要求程序可以通过检索<servlet-mapping>元素下的<url-pattern>元素进匹配,匹配后获取同级的<servlet-name>元素的值;
    通过这个值再检索<servlet>元素下的<servlet-name>元素的值进行匹配,匹配成功后,获取同级下的<url-pattern>的值,并打印<url-pattern>的值。<servlet-class>
    例如:用户输入:/s1,控制台打印:cn.itheima.servlets.MyServlet1
          用户输入:/s2,控制台打印:cn.itheima.servlets.MyServlet2*/
    
    //dom4j SAX遍历
    
    public class Demo_Dom4j {
    
        public static void main(String[] args) throws Exception {
    
    //        SAXReader reader = new SAXReader();
    //        Document document = reader.read(new File("web.xml"));
    //        String servlet_name = null;
    //        
    //        System.out.println("请输入一个路径字符串:");
    //        Scanner scan = new Scanner(System.in);
    //        String str = scan.nextLine();
    //
    //        Element root = document.getRootElement();
    //        List<Element> mappings = root.elements("servlet-mapping");
    //        for (Element element : mappings) {
    //            System.out.println(element);
    //            List<Element> urls = element.elements("url-pattern");
    //            for (Element url : urls) {
    //                System.out.println(url);
    //                String text=url.getText();
    //                System.out.println(text);
    //                if(text.equals(str)) {
    //                    Element name=element.element("servlet-name");
    //                    servlet_name=name.getText();
    //                    System.out.println(servlet_name);
    //                }
    //            }
    //        }
    //        System.out.println("===========================================================================");
    //        //准备检索servlet
    //        List<Element> servlets=root.elements("servlet");
    //        for(Element servlet:servlets) {
    //            System.out.println(servlet);
    //            List<Element> servlet_names=servlet.elements("servlet-name");
    //            for(Element servlet_n:servlet_names) {
    //                String servlet_name1=servlet_n.getText();
    //                System.out.println(servlet_name1);
    //                if(servlet_name1.equals(servlet_name)) {
    //                    Element servlet_class=servlet.element("servlet-class");
    //                    System.out.println("需要查找的类的名称是: "+servlet_class.getText());
    //                }
    //            }
    //        }
    
        }
    
        @Test
        public void show() throws Exception {
            
            SAXReader reader = new SAXReader();
            Document document = reader.read(new File("web.xml"));
            String servlet_name = null;
            
            System.out.println("请输入一个路径字符串:");
            Scanner scan = new Scanner(System.in);
            String str = scan.nextLine();
    
            Element root = document.getRootElement();
            List<Element> mappings = root.elements("servlet-mapping");
            for (Element element : mappings) {
                System.out.println(element);
                List<Element> urls = element.elements("url-pattern");
                for (Element url : urls) {
                    System.out.println(url);
                    String text=url.getText();
                    System.out.println(text);
                    if(text.equals(str)) {
                        Element name=element.element("servlet-name");
                        servlet_name=name.getText();
                        System.out.println(servlet_name);
                    }
                }
            }
            System.out.println("===========================================================================");
            //准备检索servlet
            List<Element> servlets=root.elements("servlet");
            for(Element servlet:servlets) {
                System.out.println(servlet);
                List<Element> servlet_names=servlet.elements("servlet-name");
                for(Element servlet_n:servlet_names) {
                    String servlet_name1=servlet_n.getText();
                    System.out.println(servlet_name1);
                    if(servlet_name1.equals(servlet_name)) {
                        Element servlet_class=servlet.element("servlet-class");
                        System.out.println("需要查找的类的名称是: "+servlet_class.getText());
                    }
                }
            }
            
        }
    }

     属性值的解析

    package com.swift.kaoshi;
    
    import java.io.File;
    import java.util.List;
    
    import org.dom4j.Attribute;
    import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    
    /*有product.xml,请使用dom4j解析出所有的商品信息,并打印商品的所有属性值:
    product.xml的内容如下:
    <?xml version = “1.0” encoding=”UTF-8”?>
    <products>
        <product id = “p001”>
            <name>华为X80</name>
            <color>白</color>
            <price>2800</price>
        </product>
        <product id = “p002”>
            <name>华为X88</name>
            <color>黑</color>
            <price>2900</price>
        </product>
    </products>
    
    操作步骤描述
    1.在项目目录下,按照已给出的XML内容创建product.xml文件
    2.使用核心类SaxReader加载xml文档获得Document
    3.通过Document对象获得文档的根元素
    4.获得所有product元素
    5.获得元素属性的属性值及元素下的子元素的所有文本内容*/
    
    public class Dom4j_Attribute {
    
        public static void main(String[] args) throws Exception {
    
            SAXReader sax = new SAXReader();
            Document document = sax.read(new File("product.xml"));
            Element root = document.getRootElement();
            List<Element> products = root.elements("product");
            for (Element product : products) {
                Attribute attri = product.attribute("id");
                System.out.println("product "+attri.getName()+"的属性值是 "+attri.getData());
                List<Element> dazahui=product.elements();
                for(Element za:dazahui) {
                    String name=za.getName();
                    String text=za.getText();
                    System.out.println(name+" 元素的值为 "+text);
                }
            }
    
        }
    
    }
  • 相关阅读:
    锤子科技官网:问题整理及注意事项
    springboot中文文档
    Spring Framework 开发参考手册中文(在线HTML)
    .is() 全选复选的判断
    c:forEach用法
    SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
    火狐浏览器下载文件保存文件名的乱码问题
    多线程安全的解决方法
    MySQL的concat以及group_concat的用法
    mysql 将时间转换成时间戳
  • 原文地址:https://www.cnblogs.com/qingyundian/p/8545404.html
Copyright © 2011-2022 走看看