Utilice un ejemplo para ilustrar, como este http://video.sina.com.cn/v/b/75314002-1648211320.html.
Ábralo con Firefox, habilite Firebug y obtenga la siguiente información.
que en esta solicitud
http://v.iask.com/v_play.php?vid=75314002&uid=1648211320&pid=478&tid=&plid=4001&prid=ja_7_3485822616&referrer=&ran=0.2936802236363292&r=video.sina.com.cn
La respuesta que obtenemos tiene la información xml que queremos, de la cual vid es la parte roja arriba, y todo lo que sigue a uid se puede ignorar. Ingresamos directamente http://v.iask.com/v_play.php?vid=75314002 en el. navegador Aún puede obtener la misma información. Desde entonces, la idea del análisis se ha vuelto clara. Extraiga el video del enlace del video, use http://v.iask.com/v_play.php?vid= para obtener el archivo xml y analice el archivo xml. Obtenga la dirección de video real.
El siguiente es el código para analizar xml, usando sax para analizar xml. Primero defina el lector xml.
Copie el código de código de la siguiente manera:
paquete hdu.fang.parser;
importar hdu.fang.model.Video;
importar java.util.ArrayList;
importar java.util.List;
importar org.xml.sax.Attributes;
importar org.xml.sax.SAXException;
importar org.xml.sax.helpers.DefaultHandler;
la clase pública XMLSaxReader extiende DefaultHandler {
Lista privada<Video> videos = null;
vídeo privado vídeo = nulo;
privado Largo tiempoLongitud = nulo;
etiqueta de cadena privada = nulo;
@Anular
startDocument public void() lanza SAXException {
vídeos = nueva ArrayList<Video>();
}
@Anular
elemento de inicio público vacío (cadena uri, cadena nombre local, cadena qnombre,
Atributos atributos) lanza SAXException {
if ("durl".equals(qName)) {
vídeo = nuevo vídeo();
}
etiqueta = qNombre;
}
@Anular
elemento final vacío público (cadena uri, cadena nombre local, cadena qnombre)
lanza SAXException {
if ("durl".equals(qName)) {
vídeos.add(vídeo);
vídeo = nulo;
}
etiqueta = nulo;
}
@Anular
caracteres públicos vacíos (char[] ch, int inicio, int longitud)
lanza SAXException {
si (etiqueta! = nulo) {
Datos de cadena = nueva cadena (canal, inicio, longitud);
if ("duración del tiempo".equals(etiqueta)) {
timeLength = Long.valueOf(datos);
} else if ("pedido".equals(etiqueta)) {
video.setOrder(Integer.valueOf(datos));
} else if ("url".equals(etiqueta)) {
vídeo.setUrl(datos);
} else if ("longitud".equals(etiqueta)) {
video.setLength(Integer.valueOf(datos));
}
}
}
Lista pública<Vídeo> getVideos() {
devolver vídeos;
}
público largo getLength() {
tiempo de retornoLongitud;
}
}
La clase Video es un modelo de datos definido por mí mismo. En la función principal, solo necesitamos llamar a sax factory para crear una instancia del analizador.
Copie el código de código de la siguiente manera:
SAXParserFactory sf = SAXParserFactory.newInstance();
SAXParser sp = sf.newSAXParser();
Lector XMLSaxReader = nuevo XMLSaxReader();
InputStream in_withcode = nuevo ByteArrayInputStream(
xml.getBytes("UTF-8"));//xml es el archivo xml que acaba de obtener, escriba String
sp.parse(in_withcode, lector);
videos=reader.getVideos();//Obtener lista de videos
timeLength=reader.getLength();//Obtener la duración del video
System.out.println(vídeos);
Hay mucha otra información en el archivo xml, que puede analizarse según sus necesidades.