saxについて(xsltに関して必要になったため。)


基本となるコード。

   参考URL:SAX-TECHSCORE

   ・yahooオークションカテゴリ検索から返されるxmlのtotalPage数を取得している。

      *注意点:AuctionTotalPageの方で、parseメソッドにDefaultHandlerを渡すため、
        AuctionTotalPage自体のObjectを渡しているが、自身の中で、new宣言しまうと、
        sbの値を0に戻してしまい戻り値も0になってしまった。
        そこでparseの方で、宣言したものを渡してある。

import java.io.*;
import java.lang.*;

class parse {
	public static void main(String args[])
	{
	try{
	int i;
		
	FileInputStream fr = new FileInputStream("xmlsorce01.xml");
		
	AuctionTotalPage atp = new AuctionTotalPage();
		
	i = atp.AuctionParse(fr, atp);
		
    	System.out.println("Parse結果:"+i);
    	
    	}catch(Exception e){
    		
    		e.printStackTrace();
    		
    	}
    	
	}
}

import java.io.InputStream;
import java.io.File;
import java.lang.Integer;
import java.io.IOException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class AuctionTotalPage extends DefaultHandler{
	
	int i;
	String sb = "";
	
	public int AuctionParse(InputStream ins, AuctionTotalPage atp) throws IOException, ParserConfigurationException, SAXException,InterruptedException
	{
		
    	SAXParserFactory spfactory = SAXParserFactory.newInstance();
        
        SAXParser parser = spfactory.newSAXParser();
        
        parser.parse(ins, atp);
        
        //System.out.println("動いている?:"+sb);
        
        i = Integer.parseInt(sb);
        
        return i;
        
	}
	public void startElement(String uri,String localName,String qName,Attributes attributes) {
		
	String page;
		
	if(qName == "AuctionCategoryLeaf"){
			
		sb = attributes.getValue("totalPage");
			
	}
			
        }
}
最終更新:2007年05月01日 21:12