Gunakan contoh untuk mengilustrasikannya, seperti http://video.sina.com.cn/v/b/75314002-1648211320.html ini.
Buka dengan Firefox, aktifkan firebug, dan dapatkan informasi berikut.
yang dalam permintaan ini
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
Respon yang kita dapatkan adalah informasi xml yang kita inginkan, yang vidnya berwarna merah di atas, dan semuanya setelah uid bisa kita abaikan saja. browser Anda masih bisa mendapatkan informasi yang sama. Sejak itu, ide parsing menjadi jelas. Ekstrak video dari tautan video, gunakan http://v.iask.com/v_play.php?vid= untuk mendapatkan file xml, dan parsing file xml ke dapatkan alamat video sebenarnya.
Berikut ini adalah kode untuk parsing xml, menggunakan sax untuk mengurai xml. Pertama tentukan pembaca xml.
Copy kode kodenya sebagai berikut:
paket hdu.fang.parser;
impor hdu.fang.model.Video;
impor java.util.ArrayList;
impor java.util.List;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
kelas publik XMLSaxReader memperluas DefaultHandler {
Daftar pribadi<Video> video = null;
video video pribadi = null;
pribadi Panjang waktu Panjang = null;
tag String pribadi = null;
@Mengesampingkan
public void startDocument() melempar SAXException {
video = Daftar Array baru<Video>();
}
@Mengesampingkan
public void startElement(String uri, String localName, String qName,
Atribut atribut) melempar SAXException {
if ("durl".sama dengan(qNama)) {
video = Video baru();
}
tag = qNama;
}
@Mengesampingkan
public void endElement(String uri, String nama lokal, String qName)
melempar SAXException {
if ("durl".sama dengan(qNama)) {
video.tambahkan(video);
video = nol;
}
tanda = nol;
}
@Mengesampingkan
karakter public void (char[] ch, int start, int length)
melempar SAXException {
jika (tag != nol) {
Data string = String baru(ch, start, length);
if ("durasi waktu".sama dengan(tag)) {
timeLength = Panjang.valueOf(data);
} else if ("pesanan".sama dengan(tag)) {
video.setOrder(Integer.valueOf(data));
} else if ("url".sama dengan(tag)) {
video.setUrl(data);
} else if ("panjang".sama dengan(tag)) {
video.setLength(Integer.valueOf(data));
}
}
}
Daftar publik<Video> getVideos() {
mengembalikan video;
}
getLength panjang publik() {
waktu pengembalianPanjang;
}
}
Kelas Video adalah model data yang saya tentukan sendiri. Pada fungsi utama, kita hanya perlu memanggil pabrik sax untuk membuat instance parser.
Copy kode kodenya sebagai berikut:
SAXParserFactory sf = SAXParserFactory.newInstance();
SAXParser sp = sf.newSAXParser();
Pembaca XMLSaxReader = XMLSaxReader baru();
InputStream in_withcode = ByteArrayInputStream baru(
xml.getBytes("UTF-8"));//xml adalah file xml yang baru saja diperoleh, ketik String
sp.parse(in_withcode, pembaca);
videos=reader.getVideos();//Dapatkan Daftar Video
timeLength=reader.getLength();//Dapatkan durasi video
System.out.println(video);
Masih banyak informasi lain di dalam file xml yang dapat diurai sesuai kebutuhan Anda.