亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Java實現學習筆記(一)

2019-11-18 11:49:34
字體:
來源:轉載
供稿:網友

  首先,先給出一個比較基本的處理xml文件的程序。你不必細看,直接跳過即可。需要時可以返回來看。
  
  Echo01.java
  
  import java.io.*;
  
  import org.xml.sax.*;
  
  import org.xml.sax.helpers.DefaultHandler;
  
  import javax.xml.parsers.SAXParserFactory;
  
  import javax.xml.parsers.ParserConfigurationException;
  
  import javax.xml.parsers.SAXParser;
  
  public class Echo01 extends DefaultHandler
  
  {
  
  StringBuffer textBuffer;
  
  public static void main(String argv[])
  
  {
  
    if (argv.length != 1) {
  
      System.err.  
      System.exit(1);
  
    }
  
    // Use an instance of ourselves as the SAX event handler
  
    DefaultHandler handler = new Echo01();
  
    // Use the default (non-validating) parser
  
       SAXParserFactory factory = SAXParserFactory.newInstance();
  
    try {
  
      // Set up output stream
  
      out = new OutputStreamWriter(System.out, "UTF-8");
  
      // Parse the input
  
      SAXParser saxParser = factory.newSAXParser();
  
      saxParser.parse( new File(argv[0]), handler);
  
    } catch (Throwable t) {
  
      t.printStackTrace();
  
    }
  
    System.exit(0);
  
  }
  
  static private Writer out;
  
  //===========================================================
  
  // SAX DocumentHandler methods
  
  //===========================================================
  
  public void startDocument()
  
  throws SAXException
  
  {
  
    emit("");
  
    nl();
  
  }
  
  public void endDocument()
  
  throws SAXException
  
  {
  
    try {
  
      nl();
  
      out.flush();
  
    } catch (IOException e) {
  
      throw new SAXException("I/O error", e);
  
    }
  
  }
  
  public void startElement(String namespaceURI,
  
               String sName, // simple name
  
               String qName, // qualified name
  
               Attributes attrs)
  
  throws SAXException
  
  {
  
    echoText();
  
       String eName = sName; // element name
  
    if ("".equals(eName)) eName = qName; // not namespaceAware
  
    emit("<"+eName);
  
    if (attrs != null) {
  
      for (int i = 0; i < attrs.getLength(); i++) {
  
        String aName = attrs.getLocalName(i); // Attr name
  
        if ("".equals(aName)) aName = attrs.getQName(i);
  
        emit(" ");
  
        emit(aName+"=/""+attrs.getValue(i)+"/"");
  
             }
    }
  
    emit(">");
  
  }
  
  public void endElement(String namespaceURI,
  
              String sName, // simple name
  
              String qName // qualified name
  
             )
  
  throws SAXException
  
  {
  
    echoText();
  
    String eName = sName; // element name
  
    if ("".equals(eName)) eName = qName; // not namespaceAware
  
    emit("");
  
  }
  
  public void characters(char buf[], int offset, int len)
  
  throws SAXException
  
  {
  
           String s = new String(buf, offset, len);
  
    if (textBuffer == null) {
  
      textBuffer = new StringBuffer(s);
  
    } else {
  
      textBuffer.append(s);
  
    }
  
  }
  
  //===========================================================
  
  // Utility Methods ...
  
  //===========================================================
  
  // Display text accumulated in the character buffer
  
  private void echoText()
  
  throws SAXException
  
  {
  
    if (textBuffer == null) return;
  
              String s = ""+textBuffer;
  
       emit(s);
  
       textBuffer = null;
  
  }
  
  // Wrap I/O exceptions in SAX exceptions, to
  
  // suit handler signature requirements
  
  private void emit(String s)
  
  throws SAXException
  
  {
  
    try {
  
      out.write(s);
  
      out.flush();
  
    } catch (IOException e) {
  
      throw new SAXException("I/O error", e);
  
    }
  
  }
  
  // Start a new line
  
  private void nl()
  
  throws SAXException
  
  {
  
   String lineEnd = System.getProperty("line.separator");
  
    try {
  
      out.write(lineEnd);
  
    } catch (IOException e) {
  
      throw new SAXException("I/O error", e);
  
    }
  
  }
  
  }
  
  從程序中可以看出,解析一個XML文件的核心語句是下面一部分:
  
   // Use an instance of ourselves as the SAX event handler
  
    DefaultHandler handler = new Echo01();
  
     // Use the default (non-validating) parser
  
       SAXParserFactory factory = SAXParserFactory.newInstance();
  
    try {
  
      // Set up output stream
  
      out = new OutputStreamWriter(System.out, "UTF-8");
  
       // Parse the input
  
      SAXParser saxParser = factory.newSAXParser();
  
      saxParser.parse( new File(argv[0]), handler);
  
     } catch (Throwable t) {
  
      t.printStackTrace();
  
    }
  
  先是創建一個SAXParserFactory工廠類的實例,然后通過SAXParser saxParser = factory.newSAXParser(); 這個工廠類的方法創建了一個saxParser。將xml文件(new File(argv[0]))和一個Sax Event Handler(handler)(在這個程序里面,這個Handler其實是本身這個類,這個類繼續了org.xml.sax.helpers.DefaultHandler 這個類,并且在前面初始化了它:DefaultHandler handler = new Echo01();?。﹤鬟f給它,讓它進行解析。
  
  關于xml文件的解析過程中的處理全部在Handler里面實現。一般Parser接受的是DefaultHandler或者HandlerBase這兩個類。 這個例子里面的類是繼續DefaultHandler這個虛類的。看下圖:
  
 Java實現學習筆記(一)(圖一)

  而DefaultHandler是實現了EntityResolver, DTDHandler, ContentHandler, ErrorHandler四個接口的虛類。分別定義了如下的方法:
  
 Java實現學習筆記(一)(圖二)

  不同的方法,在不同的時候被Parser調用,(這個不同的時候就是Event-based)
  
  具體介紹:(暫略)
  
  DefualtHandler的UML圖如下:
  
 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲2020天天堂在线观看| 久久久亚洲天堂| 亚洲人成在线观看网站高清| 国产精品91久久| 精品久久久久久久久中文字幕| 日本伊人精品一区二区三区介绍| 亚洲人成电影网站色| 精品国产一区二区三区久久| 国产成+人+综合+亚洲欧美丁香花| 中文欧美在线视频| 欧美亚洲国产日本| 欧美另类极品videosbestfree| 欧美一级片久久久久久久| 欧美精品999| 91wwwcom在线观看| 国产精品精品久久久| 久久久久久免费精品| 激情av一区二区| 日韩高清免费在线| 欧美情侣性视频| 欧美性猛交xxxx| 日韩极品精品视频免费观看| 97超碰色婷婷| 九九热精品视频在线播放| 日韩av在线最新| 亚洲毛片在线免费观看| 少妇激情综合网| 久久久久久久97| 欧美黑人一级爽快片淫片高清| 日韩精品高清在线| 欧美激情一区二区三区成人| 久久久女人电视剧免费播放下载| 亚洲午夜未删减在线观看| 亚洲在线www| 成人免费看片视频| 成人激情综合网| 亚洲国产欧美在线成人app| 国产精品久久9| 亚洲图中文字幕| 欧美多人爱爱视频网站| 久久久免费在线观看| 美乳少妇欧美精品| 成人福利网站在线观看11| 一个人www欧美| 欧美激情视频一区二区| 亚洲美女黄色片| 亚洲精选一区二区| 91精品国产99久久久久久| 日韩中文视频免费在线观看| 成人性生交xxxxx网站| 91精品国产精品| 欧美老女人bb| 亚洲女人天堂色在线7777| 97超级碰在线看视频免费在线看| 在线国产精品播放| 97福利一区二区| 欧美一级视频一区二区| 国产精品露脸av在线| 日韩av免费在线| 成人激情视频小说免费下载| 欧亚精品在线观看| 国产午夜一区二区| 国内精品久久久| 92福利视频午夜1000合集在线观看| 国产福利视频一区二区| 日韩精品极品在线观看| 国内精品久久久久久中文字幕| 91久久夜色精品国产网站| 亚洲精品视频网上网址在线观看| 在线一区二区日韩| 亚洲天堂一区二区三区| 亚洲一区二区三区四区在线播放| 欧美日韩国产综合视频在线观看中文| 久久久久久久成人| 欧美福利小视频| 国产91成人video| 日韩中文av在线| 精品亚洲一区二区三区在线播放| 欧美巨乳美女视频| 国产精品久久久久久久久免费| 亚洲福利在线看| 国产美女91呻吟求| 午夜精品一区二区三区在线播放| 成人高h视频在线| 视频在线观看99| 日韩在线观看成人| 成人福利网站在线观看11| 最近2019年中文视频免费在线观看| 亚洲欧洲成视频免费观看| 亚洲精品中文字幕有码专区| 亚州av一区二区| 精品中文字幕在线观看| 欧美一级免费看| 米奇精品一区二区三区在线观看| 久久噜噜噜精品国产亚洲综合| 亚洲理论电影网| 欧美激情小视频| 91精品国产自产91精品| 日韩中文字幕在线视频播放| 色诱女教师一区二区三区| 久久久精品一区二区三区| 91在线网站视频| 欧美日韩精品二区| 日韩在线视频网| 日韩精品一区二区三区第95| 欧美视频不卡中文| 国产精品96久久久久久| 插插插亚洲综合网| 欧美又大粗又爽又黄大片视频| 亚洲第一福利视频| 尤物99国产成人精品视频| 亚洲va久久久噜噜噜| 精品一区二区三区电影| 亚洲精品久久久一区二区三区| 国产97在线观看| 欧美国产高跟鞋裸体秀xxxhd| 国产精品成人久久久久| 国产伦精品一区二区三区精品视频| 伊人久久大香线蕉av一区二区| 久久久电影免费观看完整版| 成人乱人伦精品视频在线观看| 亚洲区在线播放| 亚洲人高潮女人毛茸茸| 久久影视电视剧免费网站清宫辞电视| 91伊人影院在线播放| 欧美大学生性色视频| 国产亚洲精品久久久久动| 成人欧美一区二区三区在线湿哒哒| 国产极品精品在线观看| 尤物99国产成人精品视频| 国产精品69av| 久久久精品视频成人| 欧洲亚洲免费在线| 午夜精品一区二区三区在线播放| 亚洲图中文字幕| 伊人伊成久久人综合网小说| 国产精品永久在线| 久久色免费在线视频| 久久久久久一区二区三区| 九九九久久国产免费| 97在线视频观看| 久久久精品久久久久| 亚洲电影在线观看| 日韩欧美一区二区在线| 日韩电影中文字幕av| 3344国产精品免费看| 亚洲已满18点击进入在线看片| 久久香蕉频线观| 亚洲色图18p| 国产成人午夜视频网址| 国内精品中文字幕| 亚洲精品97久久| 精品女厕一区二区三区| 国产日韩欧美夫妻视频在线观看| 中文字幕成人精品久久不卡| 欧美一区二区三区精品电影| 国产极品精品在线观看| 4438全国成人免费| 亚洲国产精品久久久| 黑人极品videos精品欧美裸| 亚洲精品视频在线观看视频| 亚洲色图狂野欧美| 国产精品男女猛烈高潮激情| 国产精品欧美风情|