xml、xml约束及xml解析

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

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

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

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

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

 

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

DTD约束:规定XML文档中元素的名称,子元素的名称及顺序,元素的属性等,通常不是本身编写框架

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

本地dtd:DTD文档在本地系统上,通常内部本身项目使用,有system标识url

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

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());
相关文章
相关标签/搜索