package com.pps.xmlparser;
import java.util.ArrayList;
import java.util.List;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import com.pps.model.Channel;
import com.pps.model.DetailModel;
public class DetailXMLContentHandler extends DefaultHandler {
private String preTag;
private List<DetailModel> mLists;
private List<Channel> channels;
private DetailModel detailModel;
private Channel mChannel;
public List<DetailModel> getmLists() {
return mLists;
}
@Override
public void startDocument() throws SAXException {
super.startDocument();
System.out.println("文档解析开始...");
mLists=new ArrayList<DetailModel>();
channels=new ArrayList<Channel>();
}
@Override
public void endDocument() throws SAXException {
super.endDocument();
System.out.println("文件解析结束");
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
super.startElement(uri, localName, qName, attributes);
System.out.println("开始解析元素....");
System.out.println("localName = "+localName+",qName = "+qName);
if("Sub".equals(qName))
{
detailModel=new DetailModel();
detailModel.setTm(new Integer(attributes.getValue("tm")));
}else if("Channel".equals(qName)){
mChannel=new Channel();
mChannel.setId(new Integer(attributes.getValue("id")));
mChannel.setUrl(attributes.getValue("url"));
mChannel.setGid(attributes.getValue("gid"));
mChannel.setFotm(attributes.getValue("fotm"));
mChannel.setLang(attributes.getValue("lang"));
mChannel.setFsize(new Integer(attributes.getValue("fsize")));
mChannel.setDl(new Byte(attributes.getValue("dl")));
mChannel.setTm(new Integer(attributes.getValue("tm")));
mChannel.setCt(new Integer(attributes.getValue("ct")));
mChannel.setFmt(attributes.getValue("fmt"));
mChannel.setDef(attributes.getValue("def"));
mChannel.setTag(attributes.getValue("tag"));
mChannel.setFn(attributes.getValue("fn"));
mChannel.setPfv2mp4(new Byte(attributes.getValue("pfv2mp4")));
}else if("Channels".equals(qName))
{
detailModel.setTotal(new Integer(attributes.getValue("Total")));
}
preTag=qName;
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
super.endElement(uri, localName, qName);
preTag="";
if("Sub".equals(qName))
{
mLists.add(detailModel);
System.out.println(detailModel.toString());
}else if ("Channels".equals(qName)) {
detailModel.setChannels(channels);
}
System.out.println("一个元素解析完成");
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
super.characters(ch, start, length);
System.out.println("字符串解析");
if("id".equals(preTag))
{
detailModel.setId(new Integer(new String(ch, start, length)));
}else if("inton".equals(preTag)) {
detailModel.setInton(new String(ch, start, length));
}else if ("type".equals(preTag)) {
detailModel.setType(new String(ch, start, length));
}else if ("region".equals(preTag)) {
detailModel.setRegion(new String(ch, start, length));
}else if ("dirt".equals(preTag)) {
detailModel.setDirt(new String(ch, start, length));
}else if ("actor".equals(preTag)) {
detailModel.setActor(new String(ch, start, length));
}else if ("vote_count".equals(preTag)) {
detailModel.setVote_count(new Integer(new String(ch, start, length)));
}else if ("block".equals(preTag)) {
detailModel.setBlock(new String(ch, start, length));
}else if ("wlock".equals(preTag)) {
detailModel.setWlock(new String(ch, start, length));
}else if ("name".equals(preTag)) {
detailModel.setName(new String(ch, start, length));
}else if ("vote".equals(preTag)) {
detailModel.setVote(Float.valueOf(new String(ch, start, length)));
}else if ("bkid".equals(preTag)) {
detailModel.setBkid(new Integer(new String(ch, start, length)));
}else if ("multi".equals(preTag)) {
detailModel.setMulti(new Byte(new String(ch, start, length)));
}else if ("vip".equals(preTag)) {
detailModel.setVip(new Integer(new String(ch, start, length)));
}else if ("vopt".equals(preTag)) {
detailModel.setVopt(new Integer(new String(ch, start, length)));
}else if ("popt".equals(preTag)) {
detailModel.setPopt(new Byte(new String(ch, start, length)));
}else if ("vlevel".equals(preTag)) {
detailModel.setVlevel(new Integer(new String(ch, start, length)));
}else if ("ct".equals(preTag)) {
detailModel.setCt(new Integer(new String(ch, start, length)));
}else if ("img".equals(preTag)) {
detailModel.setImg(new String(ch, start, length));
}else if ("followable".equals(preTag)) {
detailModel.setFollowable(new Byte(new String(ch, start, length)));
}else if ("fn".equals(preTag)) {
detailModel.setFn(new Byte(new String(ch, start, length)));
}else if ("Channel".equals(preTag)) {
mChannel.setStroy(new String(ch, start, length));
channels.add(mChannel);
}
}
}