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);
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章