Utilisez un exemple pour illustrer, comme celui-ci http://video.sina.com.cn/v/b/75314002-1648211320.html.
Ouvrez-le avec Firefox, activez Firebug et obtenez les informations suivantes.
qui dans cette demande
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 réponse que nous obtenons contient les informations XML que nous voulons, dont vid est la partie rouge ci-dessus, et tout ce qui suit uid peut être ignoré. Nous entrons directement http://v.iask.com/v_play.php?vid=75314002 dans le fichier. navigateur Vous pouvez toujours obtenir les mêmes informations. Depuis lors, l'idée de l'analyse est devenue claire. Extrayez la vidéo du lien vidéo, utilisez http://v.iask.com/v_play.php?vid= pour obtenir le fichier XML et analysez le fichier XML. obtenez la vraie adresse vidéo.
Ce qui suit est le code pour analyser XML, en utilisant sax pour analyser XML. Définissez d’abord le lecteur XML.
Copiez le code comme suit :
paquet hdu.fang.parser ;
importer hdu.fang.model.Video ;
importer java.util.ArrayList ;
importer java.util.List ;
importer org.xml.sax.Attributes ;
importer org.xml.sax.SAXException ;
importer org.xml.sax.helpers.DefaultHandler ;
la classe publique XMLSaxReader étend DefaultHandler {
liste privée<Vidéo> vidéos = null ;
vidéo vidéo privée = null ;
privé Long timeLength = null ;
balise de chaîne privée = null ;
@Outrepasser
public void startDocument() lance SAXException {
vidéos = new ArrayList<Video>();
}
@Outrepasser
public void startElement (String uri, String localName, String qName,
Attributs attributs) lance SAXException {
if ("durl".equals(qName)) {
vidéo = nouvelle vidéo ();
}
balise = qName;
}
@Outrepasser
public void endElement (String uri, String localName, String qName)
lance SAXException {
if ("durl".equals(qName)) {
vidéos.ajouter (vidéo);
vidéo = nul ;
}
balise = nulle ;
}
@Outrepasser
caractères publics vides (char[] ch, int start, int length)
lance SAXException {
si (balise != null) {
Données de chaîne = new String(ch, début, longueur);
if ("timelength".equals(tag)) {
timeLength = Long.valueOf(données);
} else if ("order".equals(tag)) {
video.setOrder(Integer.valueOf(data));
} else if ("url".equals(tag)) {
vidéo.setUrl(données);
} else if ("longueur".equals(tag)) {
video.setLength(Integer.valueOf(data));
}
}
}
liste publique<Vidéo> getVideos() {
renvoyer des vidéos ;
}
public long getLength() {
retourner la longueur du temps ;
}
}
La classe Video est un modèle de données défini par moi-même. Dans la fonction main, il suffit d’appeler la sax factory pour instancier l’analyseur.
Copiez le code comme suit :
SAXParserFactory sf = SAXParserFactory.newInstance();
SAXParser sp = sf.newSAXParser();
Lecteur XMLSaxReader = new XMLSaxReader();
InputStream in_withcode = nouveau ByteArrayInputStream (
xml.getBytes("UTF-8"));//xml est le fichier xml qui vient d'être obtenu, tapez String
sp.parse(in_withcode, lecteur);
videos=reader.getVideos();//Obtenir la liste des vidéos
timeLength=reader.getLength();//Obtenir la durée de la vidéo
System.out.println(vidéos);
Le fichier XML contient de nombreuses autres informations, qui peuvent être analysées en fonction de vos besoins.