css和javascript的一些筆記(五) xml解析 jaxp

16、實體的定義

* 語法:<!ENTITY 實體名稱 "實體的值">
*** <!ENTITY TEST "HHHH">
*** 使用實體 &實體名稱; 比如&TEST;

** 注意 
    * 定義實體需要寫在內部dtd裏面。
    如果寫在外部dtd裏面 有些瀏覽器內容得不到

17、xml的解析的簡介

* xml是標記型文檔
* js使用dom解析標記型文檔
    - 根據html的層級結構,在內存中分配一個樹形結構,把html的標籤,屬性和文本封裝成對象
* xml的解析方式(技術): dom 和 sax
* 使用dom,如果文件過大,造成內存溢出  
    優點,很方便實現增刪改操作
* sax解析 
    採用事件驅動,邊讀邊解析
    從上到下,一行一行的解析,解析到某一個對象,把對象名稱返回
    使用sax方式,不會造成內存溢出,實現查詢
    * 使用sax方式,不能實現增刪改操作
* 想要解析xml,首先需要解析器
** 不同的公司和組織提供了 針對dom和sax方式的解析器,通過api方式提供
*** sun公司, 針對dom和sax    jaxp
*** dom4j組織 針對dom和sax    dom4j(實際開發中使用多)
*** jdom組織  針對dom和sax    jdom

18、jaxp的api的查看

** jaxp是javase的一部分

** jaxp解析器在jdk的javax.xml.parsers包裏面
    ** 四個類:分別是針對dom和sax解析使用的類
    *** dom:
        DocumentBuilder:解析器類
            - 這個類是抽象類
            - parse("xml路徑") 返回的documnet是接口 父節點是node
            - 在document裏面有方法可以得到標籤
        DocumnetBuilderFactory 解析器工廠
            - 抽象類
    *** sax:
        SAXParsers

19、使用jaxp實現查詢操作

* 查詢xml中所有name元素的值
//創建解析器工廠
        DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
        //創建解析器
        DocumentBuilder builder = builderFactory.newDocumentBuilder();
        Document document = builder.parse("src/person.xml");
        NodeList list = document.getElementsByTagName("name");
        //遍歷
        for(int i=0;i<list.getLength();i++){
            Node name = list.item(i);
            //得到name元素的值
            String s =name.getTextContent();
            System.out.println(s);
        }

20、用jaxp來添加節點

* 在第一個p1的下面添加<sex>nv</sex>

加了之後是在內存中的添加。我們需要回寫  
** Transformer.transform*

21、用jaxp遍歷節點

//前三步固定
//得到根節點
//得到根節點子節點,得到。。。使用遞歸來實現
實現一個方法來實現遞歸操作
list(Node){
        if(node.getNodeType() == Node.Element_NODE){
            system.out.print(node.getNodeName());
        }
        //得到一層子節點
        nodelist list = node.getChildNodes;
        for(int i=0;i<list.getLength();i++{
            Node node1 = list.item(i);
            //繼續得到node1的子節點
            list1(node1);
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章