b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

dom xml解析_java dom解析xml_dom解析xml transform(3)

电脑杂谈  发布时间:2017-05-17 19:07:24  来源:网络整理

它需要解析器和事件处理器,其中事件处理器里面的操作需要开发人员实现,注册到解析器中,解析器逐行扫描XML文件会调用事件处理器中的方法。

基于这两种解析思想市面上就有了很多的解析api

sun jaxp既有dom方式也有sax方式,并且这套解析api已经加入到j2se的规范中,意味这不需要导入任何第三方开发包就可以直接使用这种解析方式。但是这种解析方式效率低下,没什么人用。

dom4j 可以使用dom方式高效的解析xml。导入开发包,通常只需要导入核心包就可以了,如果在使用的过程中提示少什么包到lib目录下在导入缺少的包即可。

3、SAX解析使用

这里写图片描述

java dom解析xml_dom解析xml transform_dom xml解析

SAX解析的步骤:

//1、使用SAXParserFactory创建SAX解析工厂
    SAXParserFactory spf = SAXParserFactory.newInstance();
//2、通过SAX解析工厂得到解析器对象        
    SAXParser sp = spf.newSAXParser();
//3、通过解析器对象得到一个XML的读取器
    XMLReader xmlReader = sp.getXMLReader();
//4、设置读取器的事件处理器
    xmlReader.setContentHandler(new MyContentHandler());
//5、解析xml文件 
    xmlReader.parse("book.xml");

已知xml文件book.xml如下:

<?xml version="1.0" encoding="UTF-8"?>

<书架> 
  <> 
    <书名>Java编程</书名>  
    <作者>张三</作者>  
    <售价>20.00元</售价> 
  </>  
  <> 
    <书名>Java设计模式</书名>  
    <作者>李四</作者>  
    <售价>30.00元</售价> 
  </> 
</书架>

SAX实现输出第二本书的书名的功能源码:

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;


public class SaxDemo{
    public static void main(String[] args) throws Exception {
        //1.获取解析器工厂
        SAXParserFactory factory = SAXParserFactory.newInstance();
        //2.通过工厂获取sax解析器
        SAXParser parser = factory.newSAXParser();
        //3.获取读取器
        XMLReader reader = parser.getXMLReader();
        //4.注册事件处理器
        reader.setContentHandler(new MyContentHandler2() );
        //5.解析xml
        reader.parse("book.xml");               
    }
}

//适配器设计模式
class MyContentHandler2 extends DefaultHandler{
    private String eleName = null;
    private int count = 0;

    public void startElement(String uri, String localName, String name,
            Attributes attributes) throws SAXException {
        this.eleName = name;
    }


    public void characters(char[] ch, int start, int length)
            throws SAXException {
        if("书名".equals(eleName) && ++count==2){
            System.out.println(new String(ch,start,length));
        }
    }

    public void endElement(String uri, String localName, String name)
            throws SAXException {
        eleName = null;
    }   
}


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-47696-3.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 赵东卫
      赵东卫

      所以受理费高

    • 谢明远
      谢明远

      那就是具有单身未婚的女青年的身份

    热点图片
    拼命载入中...