admin 管理员组

文章数量: 887029

xml的两种解析方式:sax,dom4j

两种解析方式的优缺点:
    sax解析:优点:不需要读取整个文件,并且将其储存在内从中,不耗费内存资源,才用触发监听的方式,文件读到哪里触发相应方法。
        缺点:不能反复调用,每次解析时都要从头解析,只能进行查询
    dom4j:优点:只需解析一次,即可反复调用。能够进行增删改查。
         缺点:必须先整体的解析一次,拿到Document对象,才能进行操作.耗费内存资源
    市面上利用Sax解析较多,因为大部分的需求都只是进行查询。
  sax解析
    1,创建一个sax解析器工厂 : SAXParserFactory factory=SAXParserFactory.newInstance( );
    2,生成一个sax解析器: SAXParser parser=factory.newSAXParser( );
    3,获取一个解析器: XMLReader reader=parser.getXmlReader();
    4,注册监听器: reader.setContentHandler( new MyContentHandler());
      MyContentHandle为我们自己所写的继承类。它实现ContentHandle接口,或继承DefaultHandle来重现其中的方法实现相应的功能
    5,解析XML:reader.parse("book.xml");
  
  
  dom4j解析
    dom4j不是有sun公司退出的解析方式,但其用法简单很被推广,使用其解析方式时需要导入dom4j包。
     1,或许解析器:SAXReader reader=new SAXReader();
     2,利用解析器读取此文件:Document document=reader.read("book.xml");
     3,获取其根节点:Element root=document.getRootElement();
     4,查询标签的内容:Element book=root.element("书名");
     5,添加某一节点:(1)生成一个新的节点 Docoument d=Document.createElement("特价");
              (2)找到需要添加到哪一个节点之下:Element book=root.element("书");
              (3)添加到书节点上:book.add(d);
     6,删除某一件点:(1)找到删除的某一节点:Document d=root.element("书").element("特价");
              (2)找到其父节点并从父节点上删除此需要删除的节点:d.getPareat().remove(d);
     7,为某一节点添加属性:(1)找到需要添加属性的节点:Element book=root.element("书");
               (2)在此节点上添加属性:book.addAttribute("出版社"," **出啊版设");
     8,删除节点属性和删除节点类似,都是找到属性,通过属性的父类删除这个属性。
     9,在进行增删改时,以上的操作只是对内存中的Document进行更改,并没有写到xml中的。
     10,更行XML文件:(1)XMLWriter writer = new XMLWriter(new FileOutputStream("book.xml"),OutputFormat.createPrettyPrint());OutputFormat.createPrettyPrint()能够使写进XML时有一个好的格式
              (2)writer.write(dom);
              (3)writer.close();
    

本文标签: xml的两种解析方式sax DOM4j