俊星的BLOG

#

COMMON DIGESTER之我的PLUGIN

     摘要: Common Digester附带了一个插件机制,可以实现很好的地址,下面是我的一个简单实现: 1、业务接口: public interface Transform {     public String transform(String s); } 2、业务接口的实现类: publ...  阅读全文

posted @ 2009-05-02 15:51 俊星 阅读(194) | 评论 (0)编辑 收藏

JAVA SAX之我的Digester

     摘要: Apache Common Digester是一个很优秀的XML解析工具,居于SAX技术,下面是我一个简单实现(点击下载源代码): 1、类图: 2、规则定义: 2-1、MyRule抽象类: package mydigest; import org.xml.sax.Attributes; /** *//**  * 规则抽象类...  阅读全文

posted @ 2009-05-01 01:27 俊星 阅读(680) | 评论 (0)编辑 收藏

JAVA SAX之简单实用

SAX是Simple API for XML的缩写(官网:saxproject),一个用来解决大型XML文档读取的接口,下面是我的简单试用:
import java.io.FileInputStream;

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

import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;

/**
 * 需要继承自DefaultHandler
 * 
@author kinkding
 
*/

public class Test extends DefaultHandler {
    
protected StringBuffer bodyText = new StringBuffer();
    
private int level = 0;
    
    
/** 开始解析元素 */
    
public void startElement(String namespaceURI, String localName, String fullName, Attributes attributes)
            
throws SAXException {
        System.out.print(getPrefix() 
+ "<" + fullName + "(");
        
for (int i = 0; i < attributes.getLength(); i++{
            String temp 
= attributes.getQName(i);
            String value 
= attributes.getValue(i);
            System.out.print(temp 
+ ":" + value + " ");
        }

        System.out.println(
")>");
        level
++;
    }

    
    
/** 元素间内容的处理 */
    
public void characters(char buffer[], int start, int length) throws SAXException {
        bodyText.append(buffer, start, length);
    }

    
    
/** 结束元素的解析 */
    
public void endElement(String namespaceURI, String localName, String fullName) throws SAXException {
        System.out.println(getPrefix() 
+ bodyText.toString().trim());
        bodyText 
= new StringBuffer();
        level
--;
        System.out.println(getPrefix() 
+ "<" + fullName + ">");
    }


    
private String getPrefix() {
        String s 
= "";
        
for (int i = 0; i < level; i++{
            s 
+= " ";
        }

        
return s;
    }


    
public XMLReader getReader() throws Exception {
        SAXParser parser 
= SAXParserFactory.newInstance().newSAXParser();
        XMLReader reader 
= parser.getXMLReader();
        reader.setDTDHandler(
this);
        reader.setContentHandler(
this);
        reader.setEntityResolver(
this);
        reader.setErrorHandler(
this);
        
return reader;
    }


    
public static void main(String[] args) throws Exception {
        Test t 
= new Test();
        XMLReader reader 
= t.getReader();
        reader.parse(
new InputSource(new FileInputStream("test.xml")));
    }

}

test.xml文件内容如下:
<?xml version='1.0'?>
<table name="job" code="1234">
    
<tr>我的家</tr>
    
<td colspan="2">生命就像一条大河</td>
    
<td colspan="3">goodjob</td>
</table>

输出如下:
<table(name:job code:1234 )>
 <tr()>
  我的家
 <tr>
 <td(colspan:
2 )>
  生命就像一条大河
 <td>
 <td(colspan:
3 )>
  goodjob
 <td>
 
<table>

posted @ 2009-04-30 20:29 俊星 阅读(163) | 评论 (0)编辑 收藏

JAVAMAIL之我的SMTP客户端实现

     摘要: JAVAMAIL源代码中包含了对于SMTP发邮件的实现,下面是我的一个简单实现: 1、BASE64编码类: package mymail; public class MyBase64Encoder {     public static byte[] encode(byte[]...  阅读全文

posted @ 2009-04-26 01:19 俊星 阅读(1030) | 评论 (0)编辑 收藏

JAVA MAIL之简单事件

     摘要: JAVA MAIL 中包含了连接、计数等事件机制,下面的对连接事件的一个简单实现: 1、事件基类: package myevent; import java.util.EventObject; public abstract class MyMailEvent extends EventObject {...  阅读全文

posted @ 2009-04-25 13:13 俊星 阅读(205) | 评论 (0)编辑 收藏

仅列出标题
共10页: First 上一页 2 3 4 5 6 7 8 9 10 下一页