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 뒤의 모든 내용은 무시할 수 있습니다. 브라우저 여전히 동일한 정보를 얻을 수 있습니다. 그 이후로 파싱에 대한 아이디어가 명확해졌습니다. 비디오 링크에서 vid를 추출하고 http://v.iask.com/v_play.php?vid=를 사용하여 xml 파일을 얻은 다음 xml 파일을 파싱합니다. 실제 비디오 주소를 얻으십시오.
다음은 sax를 사용하여 xml을 구문 분석하는 코드입니다. 먼저 XML 리더를 정의하십시오.
다음과 같이 코드 코드를 복사합니다.
패키지 hdu.fang.parser;
hdu.fang.model.Video 가져오기;
import java.util.ArrayList;
java.util.List 가져오기;
org.xml.sax.Attributes 가져오기;
import org.xml.sax.SAXException;
org.xml.sax.helpers.DefaultHandler 가져오기;
공용 클래스 XMLSaxReader는 DefaultHandler를 확장합니다.
비공개 목록<비디오> 동영상 = null;
비공개 비디오 video = null;
개인 Long timeLength = null;
개인 문자열 태그 = null;
@보수
public void startDocument()에서 SAXException이 발생합니다.
videos = new ArrayList<Video>();
}
@보수
공개 무효 startElement(문자열 uri, 문자열 localName, 문자열 qName,
속성 속성)은 SAXException을 발생시킵니다.
if ("durl".equals(qName)) {
비디오 = 새 비디오();
}
태그 = q이름;
}
@보수
공개 무효 endElement(문자열 uri, 문자열 localName, 문자열 qName)
SAXException 발생 {
if ("durl".equals(qName)) {
videos.add(비디오);
비디오 = null;
}
태그 = null;
}
@보수
공개 무효 문자(char[] ch, int start, int length)
SAXException 발생 {
if (태그 != null) {
문자열 데이터 = new String(ch, start, length);
if ("시간 길이".equals(태그)) {
timeLength = Long.valueOf(데이터);
} else if ("order".equals(tag)) {
video.setOrder(Integer.valueOf(data));
} else if ("url".equals(tag)) {
video.setUrl(데이터);
} else if ("길이".equals(태그)) {
video.setLength(Integer.valueOf(data));
}
}
}
공개 목록<비디오> getVideos() {
동영상 반환;
}
공개 긴 getLength() {
반환 시간 길이;
}
}
Video 클래스는 제가 직접 정의한 데이터 모델입니다. 메인 함수에서는 파서를 인스턴스화하기 위해 sax 팩토리만 호출하면 됩니다.
다음과 같이 코드 코드를 복사합니다.
SAXParserFactory sf = SAXParserFactory.newInstance();
SAXParser sp = sf.newSAXParser();
XMLSaxReader 리더 = 새로운 XMLSaxReader();
InputStream in_withcode = 새로운 ByteArrayInputStream(
xml.getBytes("UTF-8"));//xml은 방금 얻은 xml 파일입니다. String을 입력하세요.
sp.parse(in_withcode, reader);
videos=reader.getVideos();//동영상 목록 가져오기
timeLength=reader.getLength();//동영상 길이 가져오기
System.out.println(동영상);
xml 파일에는 필요에 따라 구문 분석할 수 있는 다른 정보가 많이 있습니다.