A Class to Convert SAX Parse Information into an XML Document : SAX « XML « Java 教程

En
Java 教程
1. 语言基础
2. 数据类型
3. 操作符
4. 流程控制
5. 类定义
6. 开发相关
7. 反射
8. 正则表达式
9. 集合
10. 线
11. 文件
12. 泛型
13. 本土化
14. Swing
15. Swing事件
16. 二维图形
17. SWT
18. SWT 二维图形
19. 网络
20. 数据库
21. Hibernate
22. JPA
23. JSP
24. JSTL
25. Servlet
26. Web服务SOA
27. EJB3
28. Spring
29. PDF
30. 电子邮件
31. 基于J2ME
32. J2EE应用
33. XML
34. 设计模式
35. 日志
36. 安全
37. Apache工具
38. 蚂蚁编译
39. JUnit单元测试
Java
Java 教程 » XML » SAX 
33. 1. 5. A Class to Convert SAX Parse Information into an XML Document
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;

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

import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.ErrorHandler;
import org.xml.sax.InputSource;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.XMLReader;

public class SAXCopy {
  static public void main(String[] arg) {
    try {
      SAXParserFactory spf = SAXParserFactory.newInstance();
      SAXParser parser = spf.newSAXParser();
      XMLReader reader = parser.getXMLReader();
      reader.setErrorHandler(new MyErrorHandler());
      MyCopyHandler duper = new MyCopyHandler();
      reader.setContentHandler(duper);
      InputSource is = new InputSource("test.xml");
      reader.parse(is);
    catch (SAXException e) {
      System.exit(1);
    catch (ParserConfigurationException e) {
      System.err.println(e);
      System.exit(1);
    catch (IOException e) {
      System.err.println(e);
      System.exit(1);
    }
  }
}

class MyErrorHandler implements ErrorHandler {
  public void warning(SAXParseException ethrows SAXException {
    show("Warning", e);
    throw (e);
  }

  public void error(SAXParseException ethrows SAXException {
    show("Error", e);
    throw (e);
  }

  public void fatalError(SAXParseException ethrows SAXException {
    show("Fatal Error", e);
    throw (e);
  }

  private void show(String type, SAXParseException e) {
    System.out.println(type + ": " + e.getMessage());
    System.out.println("Line " + e.getLineNumber() " Column " + e.getColumnNumber());
    System.out.println("System ID: " + e.getSystemId());
  }
}

class MyCopyHandler implements ContentHandler {
  private boolean namespaceBegin = false;

  private String currentNamespace;

  private String currentNamespaceUri;

  private Locator locator;

  public MyCopyHandler() {
  }

  public void setDocumentLocator(Locator locator) {
    this.locator = locator;
  }

  public void startDocument() {
    System.out.println("<?xml version=\"1.0\"?>");
    System.out.println();
  }

  public void endDocument() {
  }

  public void startPrefixMapping(String prefix, String uri) {
    namespaceBegin = true;
    currentNamespace = prefix;
    currentNamespaceUri = uri;
  }

  public void endPrefixMapping(String prefix) {
  }

  public void startElement(String namespaceURI, String localName, String qName, Attributes atts) {
    System.out.println("<" + qName);
    if (namespaceBegin) {
      System.out.print(" xmlns:" + currentNamespace + "=\"" + currentNamespaceUri + "\"");
      namespaceBegin = false;
    }
    for (int i = 0; i < atts.getLength(); i++) {
      System.out.print(" " + atts.getQName(i"=\\" + atts.getValue(i"\"");
    }
    System.out.print(">");
  }

  public void endElement(String namespaceURI, String localName, String qName) {
    System.out.print("</" + qName + ">");
  }

  public void characters(char[] ch, int start, int length) {
    for (int i = start; i < start + length; i++)
      System.out.print(ch[i]);
  }

  public void ignorableWhitespace(char[] ch, int start, int length) {
    for (int i = start; i < start + length; i++)
      System.out.print(ch[i]);
  }

  public void processingInstruction(String target, String data) {
    System.out.print("<?" + target + " " + data + "?>");
  }

  public void skippedEntity(String name) {
    System.out.print("&" + name + ";");
  }
}
//File: test.xml
<roots>
  <a>
    <b>text</b>
  </a>
</roots>



  
    text
  
33. 1. SAX
33. 1. 1. SAX解析器所有事件显示
33. 1. 2. SAX Error Checking: A Simple Implementation of the ErrorHandler Interface
33. 1. 3. XMLReader接口
33. 1. 4. A Program to Display the Input from a SAX Parser: subclass ContentHandler
33. 1. 5. A Class to Convert SAX Parse Information into an XML Document
33. 1. 6. 内容句柄输出排序名单
33. 1. 7. SAX解析器遍历一个DOM文档
33. 1. 8. Intercepting All Accesses to External Entities During XML SAX Parsing
33. 1. 9. SAX分析器执行访问
33. 1. 10. SAX分析器异常
33. 1. 11. 用简单的SAX文件句柄分析XML
33. 1. 12. 配置SAX解析器工厂,候补解析器
33. 1. 13. 使用XML查询分析器显示当前位置
33. 1. 14. 调用。NET Web服务
www.java2java.com | Contact Us
Copyright 2010 - 2030 Java Source and Support. All rights reserved.
All other trademarks are property of their respective owners.