saxについて(xsltに関して必要になったため。)
基本となるコード。
・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