⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 musicparser.java

📁 java for search when you can not find suitabe codes
💻 JAVA
字号:
package edu.jlu.fuliang;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.cyberneko.html.parsers.DOMParser;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

public class MusicParser {
	List<MusicEntity> list = new ArrayList<MusicEntity>();

	public List<MusicEntity> doPaser(InputStream is) {
		if(is == null)
			return list;
		DOMParser htmlParser = new DOMParser();
		InputSource inputSource = new InputSource(is);
		try {
			htmlParser.parse(inputSource);
			is.close();
		} catch (SAXException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		Node node = htmlParser.getDocument();
		return parseMusics(node);
	}
/*
 * 从页面中提取出歌曲的链接、专辑、歌手信息
 */
	private List<MusicEntity> parseMusics(Node node) {
	    String link,name;
		int nodeType = node.getNodeType();
		
		if (nodeType == Node.ELEMENT_NODE) {
			String nodeName = node.getNodeName();
			if ("A".equals(nodeName)) {
				MusicEntity music = new MusicEntity();
				link = getAttributeText(node, "href");
				music.setLink(link);
			    if(link != null){
				   if(isMusicLink(link)){
					    processParserMusicLink(node,music);
				    }else if(isSongerLink(link)){
					    processParserSongerLink(node,music);
			        }else if(isAlbumLink(link)){
				        processParserAbumLink(node,music);
			    }
			 }
			}
		}
		Node child = node.getFirstChild();
		while(child != null){
			parseMusics(child);
			child = child.getNextSibling();
		}
		return list;
	}

	private void processParserMusicLink(Node node,MusicEntity music){
		Node child = node.getFirstChild();
		if(child != null){
			if( child.getNodeName().toLowerCase().equals("font")){
				Node musicNameNode = child.getFirstChild();
				String name = musicNameNode.getTextContent();
				music.setName(name);
			}else{
			   music.setName(child.getTextContent());
			}
			list.add(music);
		}
	}
	
	private void processParserSongerLink(Node node,MusicEntity music){
		Node child = node.getFirstChild();
		if(child != null){
			if( child.getNodeName().toLowerCase().equals("font")){
				Node songerNode = child.getFirstChild();
				if(list.size() != 0){
				   music = list.get(list.size()-1);
				   music.setAlbum(songerNode.getTextContent());
				}
			}else{
				if(list.size() != 0){
				  music = list.get(list.size()-1);
				  music.setSonger(child.getTextContent());
				}
			}
		   }
	}
	
	private void processParserAbumLink(Node node,MusicEntity music){
		Node child = node.getFirstChild();
		   if(child != null){
			if( child.getNodeName().toLowerCase().equals("font")){
				Node albumNode = child.getFirstChild();
				if(list.size() != 0){
				   music = list.get(list.size()-1);
				   music.setAlbum(albumNode.getTextContent());
				}
			}else{
				if(list.size() != 0){
				   music = list.get(list.size()-1);
				   music.setAlbum(child.getTextContent());
				}
			}
		   }
	}
	
	private String getAttributeText(Node node, String attributeName) {
		String text = null;
		if (node.hasAttributes()) {
			Node attributeNode = node.getAttributes().getNamedItem(
					attributeName);
			if (attributeNode != null) {
				text = attributeNode.getNodeValue();
			}
		}
		return text;
	}

	private boolean isSongerLink(String link) {
		return link.startsWith(Config.getLegalSongerUrl());
	}

	private boolean isAlbumLink(String link) {
		return link.startsWith(Config.getLegalAlbumUrl());
	}

	private boolean isMusicLink(String link) {
		return link.startsWith(Config.getLegalMusicUrl());
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -