新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     >>计算机科学论坛<<     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论Java, J2SE, J2ME, J2EE, 以及Eclipse, NetBeans, JBuilder等Java开发环境,还有JSP, JavaServlet, JavaBean, EJB以及struts, hibernate, spring, webwork2, Java 3D, JOGL等相关技术。
    [返回] 计算机科学论坛计算机技术与应用『 Java/Eclipse 』 → 一个使用sax的简单例子 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 4520 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 一个使用sax的简单例子 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     mfc42d 帅哥哟,离线,有人找我吗?
      
      
      等级:大三暑假(ITELS考了6.5分!)(版主)
      文章:65
      积分:882
      门派:XML.ORG.CN
      注册:2004/6/13

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给mfc42d发送一个短消息 把mfc42d加入好友 查看mfc42d的个人资料 搜索mfc42d在『 Java/Eclipse 』的所有贴子 引用回复这个贴子 回复这个贴子 查看mfc42d的博客楼主
    发贴心情 一个使用sax的简单例子

    book.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <book xmlns="http://sauria.com/schemas/apache-xml-book/book"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://sauria.com/schemas/apache-xml-book/book
        http://www.sauria.com/schemas/apache-xml-book/book.xsd"
      version="1.0">
      <title>Professional XML Development with Apache Tools</title>
      <author>Theodore W. Leung</author>
      <isbn>0-7645-4355-5</isbn>
      <month>December</month>
      <year>2003</year>
      <publisher>Wrox</publisher>
      <address>Indianapolis, Indiana</address>
    </book>
    Book.java
    package com.sauria.apachexml.ch1;

    public class Book {
        String title;
        String author;
        String isbn;
        String month;
        int year;
        String publisher;
        String address;

        public String getAddress() {
            return address;
        }

        public String getAuthor() {
            return author;
        }

        public String getIsbn() {
            return isbn;
        }

        public String getMonth() {
            return month;
        }

        public String getPublisher() {
            return publisher;
        }

        public String getTitle() {
            return title;
        }

        public int getYear() {
            return year;
        }

        public void setAddress(String string) {
            address = string;
        }

        public void setAuthor(String string) {
            author = string;
        }

        public void setIsbn(String string) {
            isbn = string;
        }

        public void setMonth(String string) {
            month = string;
        }

        public void setPublisher(String string) {
            publisher = string;
        }

        public void setTitle(String string) {
            title = string;
        }

        public void setYear(int i) {
            year = i;
        }

        public String toString() {
            return title + " by " + author;
        }
    }
    BookHandler.java
    package com.sauria.apachexml.ch1;

    import java.util.Stack;

    import org.xml.sax.Attributes;
    import org.xml.sax.SAXException;
    import org.xml.sax.SAXParseException;
    import org.xml.sax.helpers.DefaultHandler;

    public class BookHandler extends DefaultHandler {
        private Stack elementStack = new Stack();
        private Stack textStack = new Stack();
        private StringBuffer currentText = null;
        private Book book = null;

        public Book getBook() {
            return book;
        }

        public void startElement(
            String uri,
            String localPart,
            String qName,
            Attributes attributes)
            throws SAXException {
            currentText = new StringBuffer();
            textStack.push(currentText);
            elementStack.push(localPart);
            if (localPart.equals("book")) {
                String version = attributes.getValue("", "version");
                if (version != null && !version.equals("1.0"))
                    throw new SAXException("Incorrect book version");
                book = new Book();
            }
        }

        public void endElement(String uri, String localPart,
            String qName)
            throws SAXException {
            String text = textStack.pop().toString();
            if (localPart.equals("book")) {
            } else if (localPart.equals("title")) {
                book.setTitle(text);
            } else if (localPart.equals("author")) {
                book.setAuthor(text);
            } else if (localPart.equals("isbn")) {
                book.setIsbn(text);
            } else if (localPart.equals("month")) {
                book.setMonth(text);
            } else if (localPart.equals("year")) {
                int year;
                try {
                    year = Integer.parseInt(text);
                } catch (NumberFormatException e) {
                    throw new SAXException("year must be a number");
                }
                book.setYear(year);
            } else if (localPart.equals("publisher")) {
                book.setPublisher(text);
            } else if (localPart.equals("address")) {
                book.setAddress(text);
            } else {
                throw new SAXException("Unknown element for book");
            }
            elementStack.pop();
        }

        public void characters(char[] ch, int start, int length)
            throws SAXException {
            currentText.append(ch, start, length);
        }

        public void warning(SAXParseException ex) throws SAXException {
            System.err.println(
                "[Warning] " + getLocationString(ex) + ": " +
                ex.getMessage());
        }

        public void error(SAXParseException ex) throws SAXException {
            System.err.println(
                "[Error] " + getLocationString(ex) + ": " +
                ex.getMessage());
        }

        public void fatalError(SAXParseException ex)
            throws SAXException {
            System.err.println(
                "[Fatal Error] " + getLocationString(ex) + ": " +
                ex.getMessage());
            throw ex;
        }

        /** Returns a string of the location. */
        private String getLocationString(SAXParseException ex) {
            StringBuffer str = new StringBuffer();

            String systemId = ex.getSystemId();
            if (systemId != null) {
                int index = systemId.lastIndexOf('/');
                if (index != -1)
                    systemId = systemId.substring(index + 1);
                str.append(systemId);
            }
            str.append(':');
            str.append(ex.getLineNumber());
            str.append(':');
            str.append(ex.getColumnNumber());

            return str.toString();

        }

    }
    SAXMain.java
    package com.sauria.apachexml.ch1;

    import java.io.IOException;

    import org.apache.xerces.parsers.SAXParser;
    import org.xml.sax.SAXException;
    import org.xml.sax.XMLReader;

    public class SAXMain {

        public static void main(String[] args) {
            XMLReader r = new SAXParser();
            BookHandler bookHandler = new BookHandler();
            r.setContentHandler(bookHandler);
            r.setErrorHandler(bookHandler);
            try {
                r.parse("book.xml");
                System.out.println(bookHandler.getBook().toString());
                System.out.println(bookHandler.getBook().getAddress().toString());
            } catch (SAXException se) {
                System.out.println("SAX Error during parsing " +
                    se.getMessage());
                se.printStackTrace();
            } catch (IOException ioe) {
                System.out.println("I/O Error during parsing " +
                    ioe.getMessage());
                ioe.printStackTrace();
            } catch (Exception e) {
                System.out.println("Error during parsing " +
                    e.getMessage());
                e.printStackTrace();
            }
        }
    }


       收藏   分享  
    顶(1)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/9/14 17:34:00
     
     tonghuayun 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:0
      积分:54
      门派:XML.ORG.CN
      注册:2004/11/28

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给tonghuayun发送一个短消息 把tonghuayun加入好友 查看tonghuayun的个人资料 搜索tonghuayun在『 Java/Eclipse 』的所有贴子 引用回复这个贴子 回复这个贴子 查看tonghuayun的博客2
    发贴心情 
    How to implement it? And what's the purpose of this program? Can you show me more details?
                                                                                        Thank you
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/11/28 22:42:00
     
     lai_gb 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:6
      积分:78
      门派:XML.ORG.CN
      注册:2005/12/4

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给lai_gb发送一个短消息 把lai_gb加入好友 查看lai_gb的个人资料 搜索lai_gb在『 Java/Eclipse 』的所有贴子 引用回复这个贴子 回复这个贴子 查看lai_gb的博客3
    发贴心情 
    编译SAXMain.java时错误:package org.apache.xerces.parsers does not exist
    请问如何解决?
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/12/20 11:30:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 Java/Eclipse 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2026/4/27 3:49:48

    本主题贴数3,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    93.750ms