package com.newvideo.pptv; import java.io.StringReader; import java.util.ArrayList; import java.util.Collections; import java.util.List; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.InputSource; import com.newvideo.pptv.entity.PPTVCartoonDetail; import com.newvideo.pptv.entity.PPTVCartoonVideo; import com.newvideo.pptv.entity.PPTVMovieVideo; import com.newvideo.pptv.entity.PPTVShortVideo; import com.newvideo.pptv.entity.PPTVShowDetail; import com.newvideo.pptv.entity.PPTVShowVideo; import com.newvideo.pptv.entity.PPTVTVDetail; import com.newvideo.pptv.entity.PPTVTVVideo; /** * 解析PPTV的数据 * * @author Administrator * */ public class PPTVDataParseUtil { // 解析页码链接 public static List parsePageUrl(String protocolXML) { List urlList = new ArrayList(); try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(new InputSource(new StringReader(protocolXML))); Element root = doc.getDocumentElement(); NodeList items = root.getChildNodes(); if (items != null) { for (int i = 0; i < items.getLength(); i++) { Node item = items.item(i); String url = item.getFirstChild().getFirstChild().getNodeValue(); urlList.add(url); } } } catch (Exception e) { e.printStackTrace(); } return urlList; } // 电视剧解析 public static List parseTVListVideo(String protocolXML) { List videoList = new ArrayList(); try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(new InputSource(new StringReader(protocolXML))); Element root = doc.getDocumentElement(); NodeList items = root.getChildNodes(); if (items != null) { for (int i = 0; i < items.getLength(); i++) { Node item = items.item(i); PPTVTVVideo video = parseSingleTVVideo(item); if (video != null) videoList.add(video); } } } catch (Exception e) { e.printStackTrace(); } return videoList; } // 电影解析 public static List parseMovieListVideo(String protocolXML) { List videoList = new ArrayList(); try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(new InputSource(new StringReader(protocolXML))); Element root = doc.getDocumentElement(); NodeList items = root.getChildNodes(); if (items != null) { for (int i = 0; i < items.getLength(); i++) { Node item = items.item(i); PPTVMovieVideo video = parseSingleMovieVideo(item); if (video != null) videoList.add(video); } } } catch (Exception e) { e.printStackTrace(); } return videoList; } // 动漫解析 public static List parseCartoonListVideo(String protocolXML) { List videoList = new ArrayList(); try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(new InputSource(new StringReader(protocolXML))); Element root = doc.getDocumentElement(); NodeList items = root.getChildNodes(); if (items != null) { for (int i = 0; i < items.getLength(); i++) { Node item = items.item(i); PPTVCartoonVideo video = parseSingleCartoonVideo(item); if (video != null) videoList.add(video); } } } catch (Exception e) { e.printStackTrace(); } return videoList; } // 综艺解析 public static List parseShowListVideo(String protocolXML) { List videoList = new ArrayList(); try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(new InputSource(new StringReader(protocolXML))); Element root = doc.getDocumentElement(); NodeList items = root.getChildNodes(); if (items != null) { for (int i = 0; i < items.getLength(); i++) { Node item = items.item(i); PPTVShowVideo video = parseSingleShowVideo(item); if (video != null) videoList.add(video); } } } catch (Exception e) { e.printStackTrace(); } return videoList; } // 小视频解析 public static List parseShortListVideo(String protocolXML) { List videoList = new ArrayList(); try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(new InputSource(new StringReader(protocolXML))); Element root = doc.getDocumentElement(); NodeList items = root.getChildNodes(); if (items != null) { for (int i = 0; i < items.getLength(); i++) { Node item = items.item(i); if ("item".equalsIgnoreCase(item.getNodeName())) { NodeList nodeList = item.getChildNodes(); PPTVShortVideo video = new PPTVShortVideo(); for (int n = 0; n < nodeList.getLength(); n++) { Node content = nodeList.item(n); String value = ""; if (content != null && content.getFirstChild() != null) value = content.getFirstChild().getNodeValue(); if ("singleTitle".equalsIgnoreCase(content.getNodeName())) { video.setSingleTitle(value); } else if ("category".equalsIgnoreCase(content.getNodeName())) { video.setCategory(value); } else if ("subcat".equalsIgnoreCase(content.getNodeName())) { video.setSubcat(value); } else if ("horizontalPoster".equalsIgnoreCase(content.getNodeName())) { video.setHorizontalPoster(value); } else if ("duration".equalsIgnoreCase(content.getNodeName())) { video.setDuration(value); } else if ("lastmod".equalsIgnoreCase(content.getNodeName())) { video.setLastmod(value); } else if ("playlink".equalsIgnoreCase(content.getNodeName())) { video.setPlaylink(value); } else if ("definition".equalsIgnoreCase(content.getNodeName())) { video.setDefinition(value); } else if ("publish".equalsIgnoreCase(content.getNodeName())) { video.setPublish(value); } else if ("tag".equalsIgnoreCase(content.getNodeName())) { video.setTag(value); } else if ("introduction".equalsIgnoreCase(content.getNodeName())) { video.setIntroduction(value); } else if ("aid".equalsIgnoreCase(content.getNodeName())) { video.setAid(value); } else if ("op".equalsIgnoreCase(content.getNodeName())) { video.setOp(value); } } videoList.add(video); } } } } catch (Exception e) { e.printStackTrace(); } if (videoList != null && videoList.size() > 0) Collections.reverse(videoList); return videoList; } public static PPTVTVVideo parseSingleTVVideo(Node root) { try { NodeList items = root.getChildNodes(); if (items != null) { for (int i = 0; i < items.getLength(); i++) { Node item = items.item(i); if ("lastmod".equalsIgnoreCase(item.getNodeName())) {// 最近的更新时间 } else if ("changefreq".equalsIgnoreCase(item.getNodeName())) {// } else if ("priority".equalsIgnoreCase(item.getNodeName())) { } else if ("data".equalsIgnoreCase(item.getNodeName())) {// 正式数据 PPTVTVVideo video = new PPTVTVVideo(); List detailList = new ArrayList(); NodeList contents = item.getFirstChild().getFirstChild().getChildNodes();// 内容 for (int j = 0; j < contents.getLength(); j++) { String value = ""; try { value = contents.item(j).getFirstChild().getNodeValue(); } catch (Exception e) { } if ("workName".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setWorkName(value); } else if ("version".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setVersion(value); } else if ("starring".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setStarring(value); } else if ("region".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setRegion(value); } else if ("showTime".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setShowTime(value); } else if ("type".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setType(value); } else if ("poster".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setNewPoster(value); } else if ("introduction".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setIntroduction(value); } else if ("newUpdate".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setNewUpdate(value); } else if ("workState".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setWorkState(Integer.parseInt(value)); } else if ("horizontalPoster".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setHorizontalPoster(value); } else if ("totalnumber".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setTotalnumber(Integer.parseInt(value)); } else if ("otherName".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setOtherName(value); } else if ("language".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setLanguage(value); } else if ("englishName".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setEnglishName(value); } else if ("director".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setDirector(value); } else if ("setAddress".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setSetAddress(value); } else if ("definition".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setDefinition(value); } else if ("duration".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setDuration(value); } else if ("aid".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setAid(value); } else if ("op".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setOp(value); } else if ("detail".equalsIgnoreCase(contents.item(j).getNodeName())) {// 列表 NodeList detailNodeList = contents.item(j).getChildNodes(); PPTVTVDetail detail = new PPTVTVDetail(); for (int n = 0; n < detailNodeList.getLength(); n++) { Node detailNode = detailNodeList.item(n); value = detailNode.getFirstChild().getNodeValue(); if ("seq".equalsIgnoreCase(detailNode.getNodeName())) { detail.setSeq(value); } else if ("playLink".equalsIgnoreCase(detailNode.getNodeName())) { detail.setPlayLink(value); } else if ("singletitle".equalsIgnoreCase(detailNode.getNodeName())) { detail.setSingletitle(value); } else if ("resourceTime".equalsIgnoreCase(detailNode.getNodeName())) { detail.setResourceTime(value); } else if ("singleThumbnails".equalsIgnoreCase(detailNode.getNodeName())) { detail.setSingleThumbnails(value); } else if ("poster".equalsIgnoreCase(detailNode.getNodeName())) { detail.setPoster(value); } else if ("length".equalsIgnoreCase(detailNode.getNodeName())) { detail.setLength(value); } else if ("definition".equalsIgnoreCase(detailNode.getNodeName())) { detail.setDefinition(value); } else if ("vid".equalsIgnoreCase(detailNode.getNodeName())) { detail.setVid(value); } else if ("op".equalsIgnoreCase(detailNode.getNodeName())) { detail.setOp(value); } } detail.setVideoId(video.getAid()); detailList.add(detail); } } video.setDetailList(detailList); return video; } } } } catch (Exception e) { e.printStackTrace(); } return null; } public static PPTVMovieVideo parseSingleMovieVideo(Node root) { try { NodeList items = root.getChildNodes(); if (items != null) { for (int i = 0; i < items.getLength(); i++) { Node item = items.item(i); if ("lastmod".equalsIgnoreCase(item.getNodeName())) {// 最近的更新时间 } else if ("changefreq".equalsIgnoreCase(item.getNodeName())) {// } else if ("priority".equalsIgnoreCase(item.getNodeName())) { } else if ("data".equalsIgnoreCase(item.getNodeName())) {// 正式数据 PPTVMovieVideo video = new PPTVMovieVideo(); NodeList contents = item.getFirstChild().getChildNodes();// 内容 for (int j = 0; j < contents.getLength(); j++) { String value = ""; if (contents.item(j) != null && contents.item(j).getFirstChild() != null) value = contents.item(j).getFirstChild().getNodeValue(); if ("workName".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setWorkName(value); } else if ("version".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setVersion(value); } else if ("starring".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setStarring(value); } else if ("region".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setRegion(value); } else if ("showTime".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setShowTime(value); } else if ("type".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setType(value); } else if ("poster".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setNewPoster(value); } else if ("introduction".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setIntroduction(value); } else if ("horizontalPoster".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setHorizontalPoster(value); } else if ("otherName".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setOtherName(value); } else if ("language".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setLanguage(value); } else if ("englishName".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setEnglishName(value); } else if ("director".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setDirector(value); } else if ("definition".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setDefinition(value); } else if ("length".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setLength(value); } else if ("aid".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setVid(value); } else if ("tags".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setTags(value); } else if ("playLink".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setPlaySDKurl(value); } else if ("resourceTime".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setResourceTime(value); } else if ("op".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setOp(value); } } return video; } } } } catch (Exception e) { e.printStackTrace(); } return null; } public static PPTVCartoonVideo parseSingleCartoonVideo(Node root) { try { NodeList items = root.getChildNodes(); if (items != null) { for (int i = 0; i < items.getLength(); i++) { Node item = items.item(i); if ("lastmod".equalsIgnoreCase(item.getNodeName())) {// 最近的更新时间 } else if ("changefreq".equalsIgnoreCase(item.getNodeName())) {// } else if ("priority".equalsIgnoreCase(item.getNodeName())) { } else if ("data".equalsIgnoreCase(item.getNodeName())) {// 正式数据 PPTVCartoonVideo video = new PPTVCartoonVideo(); List detailList = new ArrayList(); NodeList contents = item.getFirstChild().getFirstChild().getChildNodes();// 内容 for (int j = 0; j < contents.getLength(); j++) { String value = ""; try { value = contents.item(j).getFirstChild().getNodeValue(); } catch (Exception e) { } if ("workName".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setWorkName(value); } else if ("version".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setVersion(value); } else if ("region".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setRegion(value); } else if ("showTime".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setShowTime(value); } else if ("type".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setType(value); } else if ("poster".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setNewPoster(value); } else if ("introduction".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setIntroduction(value); } else if ("horizontalPoster".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setHorizontalPoster(value); } else if ("otherName".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setOtherName(value); } else if ("language".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setLanguage(value); } else if ("englishName".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setEnglishName(value); } else if ("totalNumber".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setTotalNumber(Integer.parseInt(value)); } else if ("workState".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setWorkState(Integer.parseInt(value)); } else if ("newUpdate".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setNewUpdate(value); } else if ("aid".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setAid(value); } else if ("op".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setOp(value); } else if ("detail".equalsIgnoreCase(contents.item(j).getNodeName())) {// 列表 NodeList detailNodeList = contents.item(j).getChildNodes(); PPTVCartoonDetail detail = new PPTVCartoonDetail(); for (int n = 0; n < detailNodeList.getLength(); n++) { Node detailNode = detailNodeList.item(n); value = detailNode.getFirstChild().getNodeValue(); if ("seq".equalsIgnoreCase(detailNode.getNodeName())) { detail.setSeq(value); } else if ("playLink".equalsIgnoreCase(detailNode.getNodeName())) { detail.setPlayLink(value); } else if ("singleTitle".equalsIgnoreCase(detailNode.getNodeName())) { detail.setSingleTitle(value); } else if ("singleThumbnails".equalsIgnoreCase(detailNode.getNodeName())) { detail.setSingleThumbnails(value); } else if ("poster".equalsIgnoreCase(detailNode.getNodeName())) { detail.setPoster(value); } else if ("length".equalsIgnoreCase(detailNode.getNodeName())) { detail.setLength(value); } else if ("definition".equalsIgnoreCase(detailNode.getNodeName())) { detail.setDefinition(value); } else if ("vid".equalsIgnoreCase(detailNode.getNodeName())) { detail.setVid(value); } else if ("op".equalsIgnoreCase(detailNode.getNodeName())) { detail.setOp(value); } } detail.setVideoId(video.getAid()); detailList.add(detail); } } video.setDetailList(detailList); return video; } } } } catch (Exception e) { e.printStackTrace(); } return null; } public static PPTVShowVideo parseSingleShowVideo(Node root) { try { NodeList items = root.getChildNodes(); if (items != null) { for (int i = 0; i < items.getLength(); i++) { Node item = items.item(i); if ("lastmod".equalsIgnoreCase(item.getNodeName())) {// 最近的更新时间 } else if ("changefreq".equalsIgnoreCase(item.getNodeName())) {// } else if ("priority".equalsIgnoreCase(item.getNodeName())) { } else if ("data".equalsIgnoreCase(item.getNodeName())) {// 正式数据 PPTVShowVideo video = new PPTVShowVideo(); List detailList = new ArrayList(); NodeList contents = item.getFirstChild().getFirstChild().getChildNodes();// 内容 for (int j = 0; j < contents.getLength(); j++) { String value = ""; try { value = contents.item(j).getFirstChild().getNodeValue(); } catch (Exception e) { } if ("workName".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setWorkName(value); } else if ("version".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setVersion(value); } else if ("region".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setRegion(value); } else if ("showTime".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setShowTime(value); } else if ("type".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setType(value); } else if ("newPoster".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setNewPoster(value); } else if ("introduction".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setIntroduction(value); } else if ("horizontalPoster".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setHorizontalPoster(value); } else if ("otherName".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setOtherName(value); } else if ("language".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setLanguage(value); } else if ("englishName".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setEnglishName(value); } else if ("totalNumber".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setTotalNumber(Integer.parseInt(value)); } else if ("workState".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setWorkState(Integer.parseInt(value)); } else if ("newUpdate".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setNewUpdate(value); } else if ("aid".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setAid(value); } else if ("host".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setHost(value); } else if ("station".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setStation(value); } else if ("op".equalsIgnoreCase(contents.item(j).getNodeName())) { video.setOp(value); } else if ("detail".equalsIgnoreCase(contents.item(j).getNodeName())) {// 列表 NodeList detailNodeList = contents.item(j).getChildNodes(); PPTVShowDetail detail = new PPTVShowDetail(); for (int n = 0; n < detailNodeList.getLength(); n++) { Node detailNode = detailNodeList.item(n); try { value = detailNode.getFirstChild().getNodeValue(); } catch (Exception e) { } if ("seq".equalsIgnoreCase(detailNode.getNodeName())) { detail.setSeq(value); } else if ("date".equalsIgnoreCase(detailNode.getNodeName())) { detail.setDate(value); } else if ("definition".equalsIgnoreCase(detailNode.getNodeName())) { detail.setDefinition(value); } else if ("length".equalsIgnoreCase(detailNode.getNodeName())) { detail.setLength(value); } else if ("op".equalsIgnoreCase(detailNode.getNodeName())) { detail.setOp(value); } else if ("playLink".equalsIgnoreCase(detailNode.getNodeName())) { detail.setPlayLink(value); } else if ("poster".equalsIgnoreCase(detailNode.getNodeName())) { detail.setPoster(value); } else if ("resourceTime".equalsIgnoreCase(detailNode.getNodeName())) { detail.setResourceTime(value); } else if ("singleThumbnails".equalsIgnoreCase(detailNode.getNodeName())) { detail.setSingleThumbnails(value); } else if ("singleTitle".equalsIgnoreCase(detailNode.getNodeName())) { detail.setSingleTitle(value); } else if ("vid".equalsIgnoreCase(detailNode.getNodeName())) { detail.setVid(value); } } detail.setVideoId(video.getAid()); detailList.add(detail); } } video.setDetailList(detailList); return video; } } } } catch (Exception e) { e.printStackTrace(); } return null; } public static String parseScore(String protocolXML) { try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(new InputSource(new StringReader(protocolXML))); Element root = doc.getDocumentElement(); NodeList items = root.getChildNodes(); if (items != null) { for (int i = 0; i < items.getLength(); i++) { Node item = items.item(i); if ("mark".equalsIgnoreCase(item.getNodeName())) return item.getFirstChild().getNodeValue(); } } } catch (Exception e) { e.printStackTrace(); } return ""; } }