扩展DefaultHandler创建一个XML绑定 : XML数据 « 可扩展标记语言 « Java

En
Java
1. 图形用户界面
2. 三维图形动画
3. 高级图形
4. 蚂蚁编译
5. Apache类库
6. 统计图
7. 
8. 集合数据结构
9. 数据类型
10. 数据库JDBC
11. 设计模式
12. 开发相关类
13. EJB3
14. 电子邮件
15. 事件
16. 文件输入输出
17. 游戏
18. 泛型
19. GWT
20. Hibernate
21. 本地化
22. J2EE平台
23. 基于J2ME
24. JDK-6
25. JNDI的LDAP
26. JPA
27. JSP技术
28. JSTL
29. 语言基础知识
30. 网络协议
31. PDF格式RTF格式
32. 映射
33. 常规表达式
34. 脚本
35. 安全
36. Servlets
37. Spring
38. Swing组件
39. 图形用户界面
40. SWT-JFace-Eclipse
41. 线程
42. 应用程序
43. Velocity
44. Web服务SOA
45. 可扩展标记语言
Java 教程
Java » 可扩展标记语言 » XML数据屏幕截图 
扩展DefaultHandler创建一个XML绑定


import java.io.File;
import java.util.ArrayList;

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

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

public class SAXSample {
  public static void main(String[] argsthrows Exception {
    File file = new File("book.xml");
    SAXParserFactory factory = SAXParserFactory.newInstance();

    MyHandler handler = new MyHandler();

    SAXParser saxParser = factory.newSAXParser();
    saxParser.parse(file, handler);
    SAXBooks books = handler.getBooks();

    for (int i = 0; i < books.getBookSize(); i++) {
      SAXBook book = books.getBook(i);
      System.out.println(book);
    }
  }
}

class MyHandler extends DefaultHandler {
  private SAXBooks books;

  private boolean readingAuthor;

  private boolean readingTitle;

  private boolean readingPrice;

  public SAXBooks getBooks() {
    return this.books;
  }

  public void startElement(String uri, String localName, String qName, Attributes attributes) {
    if (qName.equalsIgnoreCase("books")) {
      books = new SAXBooks();
    else if (qName.equalsIgnoreCase("book")) {
      SAXBook book = new SAXBook();
      for (int i = 0; i < attributes.getLength(); i++) {
        if (attributes.getQName(i).equalsIgnoreCase("category")) {
          book.setCategory(attributes.getValue(i));
        }
      }
      books.addBook(book);
    else if (qName.equalsIgnoreCase("author")) {
      this.readingAuthor = true;
    else if (qName.equalsIgnoreCase("title")) {
      this.readingTitle = true;
    else if (qName.equalsIgnoreCase("price")) {
      this.readingPrice = true;
    else {
      System.out.println("Unknown element: " + qName);
    }
  }

  public void startDocument() {
  }

  public void endDocument() {
  }

  public void characters(char[] ch, int start, int length) {
    String chars = new String(ch, start, length).trim();
    if (chars.length() == 0) {
      return;
    }

    SAXBook book = books.getLastBook();
    if (readingAuthor) {
      book.setAuthor(chars);
    else if (readingTitle) {
      book.setTitle(chars);
    else if (readingPrice) {
      book.setPrice(Float.parseFloat(chars));
    }
  }

  public void endElement(String uri, String localName, String qName) {
    if (qName.equalsIgnoreCase("author")) {
      this.readingAuthor = false;
    else if (qName.equalsIgnoreCase("title")) {
      this.readingTitle = false;
    else if (qName.equalsIgnoreCase("price")) {
      this.readingPrice = false;
    }
  }
}

class SAXBook {
  private String title;

  private String author;

  private String category;

  private float price;

  public SAXBook() {
  }

  public SAXBook(String title, String author, String category, float price) {
    this.title = title;
    this.author = author;
    this.category = category;
    this.price = price;
  }

  public String getTitle() {
    return this.title;
  }

  public void setTitle(String title) {
    this.title = title;
  }

  public String getAuthor() {
    return this.author;
  }

  public void setAuthor(String author) {
    this.author = author;
  }

  public String getCategory() {
    return this.category;
  }

  public void setCategory(String category) {
    this.category = category;
  }

  public float getPrice() {
    return this.price;
  }

  public void setPrice(float price) {
    this.price = price;
  }

  public String toString() {
    return "Book: " + title + ", " + category + ", " + author + ", " + price;
  }
}

class SAXBooks {
  private ArrayList<SAXBook> bookList = new ArrayList<SAXBook>();

  public SAXBooks() {
  }

  public void addBook(SAXBook book) {
    this.bookList.add(book);
  }

  public SAXBook getBook(int index) {
    if (index >= bookList.size()) {
      return null;
    }
    return (SAXBookbookList.get(index);
  }

  public SAXBook getLastBook() {
    return this.getBook(this.getBookSize() 1);
  }

  public int getBookSize() {
    return bookList.size();
  }
}

<books> 
  <book category="fiction"
    <title>title 1</title> 
    <author>Tim Lahaye</author> 
    <price>14.95</price> 
  </book> 
  <book category="science fiction"
    <title>title 2</title> 
    <author>Tim Lahaye</author> 
    <price>14.95</price> 
  </book> 

</books> 

 
Related examples in the same category
1. XML流
2. XML绑定
www.java2java.com | Contact Us
Copyright 2010 - 2030 Java Source and Support. All rights reserved.
All other trademarks are property of their respective owners.