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());
相關文章
相關標籤/搜索