ใช้ตัวอย่างเพื่อแสดง เช่น http://video.sina.com.cn/v/b/75314002-1648211320.html นี้
เปิดด้วย Firefox เปิดใช้งาน firebug และรับข้อมูลต่อไปนี้
ซึ่งในการร้องขอนี้
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
การตอบสนองที่เราได้รับมีข้อมูล xml ที่เราต้องการ โดยที่ vid คือส่วนสีแดงด้านบน และทุกอย่างที่อยู่หลัง uid สามารถละเว้นได้ เราป้อน http://v.iask.com/v_play.php?vid=75314002 โดยตรงใน เบราว์เซอร์ คุณยังสามารถรับข้อมูลเดียวกันได้ ตั้งแต่นั้นมา แนวคิดในการแยกวิเคราะห์ก็ชัดเจน แยกวิดีโอออกจากลิงก์วิดีโอ ใช้ http://v.iask.com/v_play.php?vid= เพื่อรับไฟล์ xml และแยกไฟล์ xml ไปที่ รับที่อยู่วิดีโอจริง
ต่อไปนี้เป็นรหัสสำหรับการแยกวิเคราะห์ xml โดยใช้ sax เพื่อแยกวิเคราะห์ xml ขั้นแรกให้กำหนดโปรแกรมอ่าน xml
คัดลอกรหัสรหัสดังต่อไปนี้:
แพ็คเกจ hdu.fang.parser;
นำเข้า hdu.fang.model.Video;
นำเข้า java.util.ArrayList;
นำเข้า java.util.List;
นำเข้า org.xml.sax.Attributes;
นำเข้า org.xml.sax.SAXException;
นำเข้า org.xml.sax.helpers.DefaultHandler;
XMLSaxReader ระดับสาธารณะขยาย DefaultHandler {
รายการส่วนตัว <วิดีโอ> วิดีโอ = null;
วิดีโอส่วนตัว วิดีโอ = null;
ส่วนตัว Long timeLength = null;
แท็กสตริงส่วนตัว = null;
@แทนที่
โมฆะสาธารณะ startDocument () พ่น SAXException {
วิดีโอ = ArrayList ใหม่ <วิดีโอ>();
-
@แทนที่
โมฆะสาธารณะ startElement (สตริง uri, สตริงชื่อท้องถิ่น, สตริง qName,
คุณลักษณะแอตทริบิวต์) พ่น SAXException {
ถ้า ("durl".equals(qName)) {
วิดีโอ = วิดีโอใหม่ ();
-
แท็ก = qName;
-
@แทนที่
โมฆะสาธารณะ endElement (สตริง uri, สตริงชื่อท้องถิ่น, สตริง qName)
พ่น SAXException {
ถ้า ("durl".เท่ากับ(qName)) {
videos.add(วิดีโอ);
วิดีโอ = โมฆะ;
-
แท็ก = โมฆะ;
-
@แทนที่
อักขระโมฆะสาธารณะ (char [] ch, int start, int length)
พ่น SAXException {
ถ้า (แท็ก != null) {
ข้อมูลสตริง = สตริงใหม่ (ch, เริ่มต้น, ความยาว);
ถ้า ("ระยะเวลา".เท่ากับ (แท็ก)) {
timeLength = Long.valueOf (ข้อมูล);
} อื่นถ้า ("สั่งซื้อ".เท่ากับ (แท็ก)) {
video.setOrder(จำนวนเต็มvalueOf(ข้อมูล));
} อื่นถ้า ("url".equals(tag)) {
video.setUrl(ข้อมูล);
} อื่นถ้า ("ความยาว".เท่ากับ (แท็ก)) {
video.setLength(จำนวนเต็มvalueOf(ข้อมูล));
-
-
-
รายการสาธารณะ <วิดีโอ> getVideos() {
กลับวิดีโอ;
-
getLength ยาวสาธารณะ () {
ระยะเวลาส่งคืน;
-
-
คลาสวิดีโอเป็นโมเดลข้อมูลที่กำหนดโดยตัวฉันเอง ในฟังก์ชันหลัก เราเพียงต้องเรียกโรงงานแซ็กโซโฟนเพื่อสร้างอินสแตนซ์ของ parser
คัดลอกรหัสรหัสดังต่อไปนี้:
SAXParserFactory sf = SAXParserFactory.newInstance();
SAXParser sp = sf.ใหม่SAXParser();
เครื่องอ่าน XMLSaxReader = XMLSaxReader ใหม่ ();
InputStream in_withcode = ByteArrayInputStream ใหม่ (
xml.getBytes("UTF-8"));//xml เป็นไฟล์ xml ที่เพิ่งได้มา ให้พิมพ์ String
sp.parse(in_withcode, เครื่องอ่าน);
videos=reader.getVideos();//รับรายการวิดีโอ
timeLength=reader.getLength();//รับความยาววิดีโอ
System.out.println (วิดีโอ);
มีข้อมูลอื่นๆ อีกมากมายในไฟล์ xml ซึ่งสามารถแยกวิเคราะห์ได้ตามความต้องการของคุณ