亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java解析sina視頻

 更新時(shí)間:2014年01月10日 11:15:23   作者:  
本文介紹了一個(gè)java解析sina視頻地址的例子,從這個(gè)例子中可以學(xué)習(xí)到j(luò)ava使用sax解析xml的方法,大家可以參考修改成其它功能

用一個(gè)例子來(lái)說(shuō)明,比如這個(gè)http://video.sina.com.cn/v/b/75314002-1648211320.html。
用火狐打開(kāi),開(kāi)啟firebug,得到如下信息。

其中在這個(gè)請(qǐng)求

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

中得到的響應(yīng)有我們想要的xml信息,其中vid就是上面紅色部分,uid后面的都可以忽略,我們?cè)跒g覽器中直接輸入http://v.iask.com/v_play.php?vid=75314002還是可以得到相同的信息。自此解析的思路就變清晰了,在視頻鏈接中提取出vid,使用http://v.iask.com/v_play.php?vid=得到xml文件,解析xml文件就可以得到真實(shí)視頻地址了。

下面的是解析xml的代碼,使用sax解析xml。首先定義xml reader。

復(fù)制代碼 代碼如下:

package hdu.fang.parser;

import hdu.fang.model.Video;

import java.util.ArrayList;
import java.util.List;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class XMLSaxReader extends DefaultHandler {
    private List<Video> videos = null;
    private Video video = null;
    private Long timeLength = null;
    private String tag = null;

    @Override
    public void startDocument() throws SAXException {
        videos = new ArrayList<Video>();
    }

    @Override
    public void startElement(String uri, String localName, String qName,
            Attributes attributes) throws SAXException {
        if ("durl".equals(qName)) {
            video = new Video();
        }

        tag = qName;
    }

    @Override
    public void endElement(String uri, String localName, String qName)
            throws SAXException {
        if ("durl".equals(qName)) {
            videos.add(video);
            video = null;
        }
        tag = null;
    }

    @Override
    public void characters(char[] ch, int start, int length)
            throws SAXException {
        if (tag != null) {
            String data = new String(ch, start, length);
            if ("timelength".equals(tag)) {
                timeLength = Long.valueOf(data);
            } else if ("order".equals(tag)) {
                video.setOrder(Integer.valueOf(data));
            } else if ("url".equals(tag)) {
                video.setUrl(data);
            } else if ("length".equals(tag)) {
                video.setLength(Integer.valueOf(data));
            }
        }
    }

     
    public List<Video> getVideos() {
        return videos;
    }

    public long getLength() {
        return timeLength;
    }
}

Video類(lèi)是我自己定義的一個(gè)數(shù)據(jù)model。在主函數(shù)里我們只要調(diào)用sax工廠(chǎng)實(shí)例化解析器就行了。

復(fù)制代碼 代碼如下:

SAXParserFactory sf = SAXParserFactory.newInstance();
SAXParser sp = sf.newSAXParser();
XMLSaxReader reader = new XMLSaxReader();
InputStream in_withcode = new ByteArrayInputStream(
    xml.getBytes("UTF-8"));//xml就是剛得到的xml文件,類(lèi)型String
sp.parse(in_withcode, reader);
videos=reader.getVideos();//得到Video List
timeLength=reader.getLength();//得到視頻長(zhǎng)度
System.out.println(videos);

在xml文件里還有很多其他信息,都可以解析出來(lái),看自己需要了。

相關(guān)文章

  • 詳解IntelliJ IDEA 自帶的 HTTP Client 接口調(diào)用插件吊打 Postman

    詳解IntelliJ IDEA 自帶的 HTTP Client 接口調(diào)用插件吊打 Postman

    HTTP Client 是 IDEA 自帶的一款簡(jiǎn)潔輕量級(jí)的接口調(diào)用插件,通過(guò)它,我們能在 IDEA 上開(kāi)發(fā),調(diào)試,測(cè)試 RESTful Web 服務(wù),接下來(lái)通過(guò)本文給大家分享IntelliJ IDEA 自帶的 HTTP Client 接口調(diào)用插件吊打 Postman的知識(shí),感興趣的朋友一起看看吧
    2021-05-05
  • SpringBoot如何實(shí)現(xiàn)分離資源文件并打包

    SpringBoot如何實(shí)現(xiàn)分離資源文件并打包

    這篇文章主要介紹了SpringBoot如何實(shí)現(xiàn)分離資源文件并打包,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • 淺談Redis的key和value大小限制

    淺談Redis的key和value大小限制

    這篇文章主要介紹了淺談Redis的key和value大小限制,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • Java String保存字符串的機(jī)制

    Java String保存字符串的機(jī)制

    Java中字符串以什么格式來(lái)存儲(chǔ)?Java 中的 Unicode 字符串會(huì)按照 Latin1或者 UTF16 的編碼格式保存在 String 中,本文就詳細(xì)的介紹了一下,感興趣的可以了解一下
    2021-05-05
  • SpringBoot事件機(jī)制相關(guān)知識(shí)點(diǎn)匯總

    SpringBoot事件機(jī)制相關(guān)知識(shí)點(diǎn)匯總

    這篇文章主要介紹了SpringBoot事件機(jī)制相關(guān)知識(shí)點(diǎn)匯總,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 淺析Java中線(xiàn)程的創(chuàng)建和啟動(dòng)

    淺析Java中線(xiàn)程的創(chuàng)建和啟動(dòng)

    這篇文章運(yùn)用實(shí)例代碼介紹了Java中線(xiàn)程的創(chuàng)建和啟動(dòng),非常詳細(xì),有需要的朋友們可以參考借鑒,下面一起來(lái)看看。
    2016-08-08
  • 淺析java中常用的定時(shí)任務(wù)框架-單體

    淺析java中常用的定時(shí)任務(wù)框架-單體

    這篇文章主要帶大家了解常用的單體應(yīng)用定時(shí)任務(wù)框架以及掌握定時(shí)任務(wù)在單體中如何使用,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2021-12-12
  • springboot集成dubbo注解版的示例代碼

    springboot集成dubbo注解版的示例代碼

    這篇文章主要介紹了springboot集成dubbo注解版的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • Spring裝配Bean之用Java代碼安裝配置bean詳解

    Spring裝配Bean之用Java代碼安裝配置bean詳解

    這篇文章主要給大家介紹了關(guān)于Spring裝配Bean之用Java代碼安裝配置bean的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用spring具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • java編程abstract類(lèi)和方法詳解

    java編程abstract類(lèi)和方法詳解

    這篇文章主要介紹了java編程abstract類(lèi)和方法詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12

最新評(píng)論