zoukankan      html  css  js  c++  java
  • xml、xml约束及xml解析

    xml:可扩展标记语言,通过xml文件的配置,实现不同的路径访问不同的资源

    xml文档声明必须在0行0列

    element:xml中的必备元素,区分大小写,不能使用空格和冒号,必须有结尾

    元素的属性:必须在开始标签中,属性值以单引或者双引,以字母开头

    转义字符:<![CDATA[ 写入需要转义的字符 ]]> 避免了转义字符太多的麻烦

    dtd/schema:xml里面的标签可以随便写,很不安全,使用约束文档可以限定xml文件的内容

    DTD约束:规定XML文档中元素的名称,子元素的名称及顺序,元素的属性等,一般不是自己编写

    内部dtd:DTD文档在xml中,只对当前XML有效

    本地dtd:DTD文档在本地系统上,一般内部自己项目使用,有system标识

    公共dtd:DTD文档在网络上,一般由框架提供,有public标识

    schema约束:本身也是xml文档,但是扩展名为xsd,有命名空间

    命名空间:一个xml使用多个schema约束时,命名空间才有效果,类似于java中的包

    显示命名空间(xmlns:别名="")和默认命名空间(xmlns="")

    一般使用默认命名空间

    dom4j:解析xml文件中的内容

     dom解析:将xml文档加载到内存,解析成一个document对象,可以增删改查

    sax解析:逐行扫描,一边扫描,一边解析,然后释放资源,读取速度快,不能增删改查

    pull解析:安卓内置的解析方式

    需要导入jar包才能使用

    //获得解析器
            SAXReader saxReader = new SAXReader();
            //加载xml文档,获得document对象
            Document doc = saxReader.read("src/com/oracle/demo02/schema.xml");
            //获得根元素
            Element e = doc.getRootElement();
            //获得子元素servlet
            Element servlet = e.element("servlet");
            //获得servlet元素下的子元素的文本内容
            String servletName = servlet.elementText("servlet-name");
            String servletClass = servlet.elementText("servlet-class");
            System.out.println(servletName);
            System.out.println(servletClass);
            //获得子元素servlet-mapping
            Element servletMapping = e.element("servlet-mapping");
            //获得servlet-mapping元素下子元素的文本内容
            System.out.println(servletMapping.elementText("servlet-name"));
            System.out.println(servletMapping.elementText("url-pattern"));
            //获得根元素下所有的子元素
            List<Element> list = e.elements();
            for(Element ee:list){
                //遍历子元素的名称
                System.out.println(ee.getName());

     解析工作在反射中的使用

    //获得解析器
            SAXReader saxReader = new SAXReader();
            //加载xml文档,获得document对象
            Document doc = saxReader.read("src/com/oracle/demo03/web.xml");
            //获得根元素
            Element root = doc.getRootElement();
            //获得servlet-class的文本内容
            String servletClass = root.element("servlet").elementText("servlet-class");
            //进行反射
            Class c = Class.forName(servletClass);
            Method init = c.getMethod("init");
            Method service = c.getMethod("service");
            Method destroy = c.getMethod("destroy");
            init.invoke(c.newInstance());
            service.invoke(c.newInstance());
            destroy.invoke(c.newInstance());
  • 相关阅读:
    策略模式(Strategy)
    java.lang.reflect.Method
    java.lang.reflect.Constructor
    快速导航
    Java反射机制(Reflection)
    java.lang.Class
    java.lang.reflect.Field
    java常用类 --- Object
    vuex:弄懂mapState、mapGetters、mapMutations、mapActions
    超详细MySQL安装及基本使用教程
  • 原文地址:https://www.cnblogs.com/yelena-niu/p/9255193.html
Copyright © 2011-2022 走看看