2013-07-18 3 views
0

RSS에서 XML 파일을 가져 와서 특정 태그로 구문 분석하는 웹 페이지를 작성했습니다. 내가 사용하려고 계획하고있는 데이터의 로컬 복사본에서 테스트 해봤는데 정상적으로 작동합니다. 이 캐치는 다른 웹 페이지에서 RSS 파일을 호출하고 데이터를 파싱하는 방법을 파악할 수 없다는 것입니다.Javascript를 사용하여 RSS Atom 피드에서 데이터 가져 오기

<?xml version="1.0" encoding="UTF-8" ?> 
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"> 
<title type="text"> News</title> 
<subtitle type="text">A syndication of the most recently published news.</subtitle> 

<id>uuid:64d61c8e-c5d7-4529-b5a3-2dcd4097238b;id=50</id> 

<rights type="text">© 2013 <owner goes here>. All Rights Reserved.</rights> 

<updated>2013-07-09T13:34:27Z</updated> 

<link rel="alternate" href=".../Default.aspx" /> 
<link rel="self" href=".../NewsFeed.aspx" /> 

내가 대한 링크를 편집 : 나는 RSS 페이지를 검사 할 때 여기에

if (window.XMLHttpRequest) 
{// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
} 
else 
{// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
} 
xmlhttp.open("GET", ".../NewsFeed.aspx?output=Atom", false); 

내가 얻을 xml 파일의 헤더입니다 : 여기

파서를 설정하는 내 코드입니다 게시 목적. 오픈 XML 메소드의 외부 피드에 대한 URL뿐만 아니라 RSS 문서에 나열된 두 링크를 모두 사용해 보았습니다.하지만 운이 없었습니다.

xmlhttp.open("GET", "link goes here", false); 

내가 RSS 피드를 읽는 방법을 아는 사람이 있습니까? 참고로 피드는 Atom 형식으로 반환되는 표준 RSS 피드 (2.0)입니다. 우선 확인하기 위해

+0

YQL 또는 yahoo 파이프 – dandavis

+0

나는 그 중 하나가 무슨 뜻인지 잘 모르겠습니다. 나는 HTML/JS와 XML의 상호 작용에 대해 매우 익숙하지 않다. – user2517628

+0

누군가 나에게 들어 본 적이없는 제안을하면 가장 먼저 할 일은 ... – dandavis

답변

0

두 가지 :

1) 귀하의 NewsFeed.aspx는 페이지를 호출하는 것과 정확히 같은 프로토콜, 하위 도메인, 도메인 및 포트에서 호스팅 할 필요가있다. 그렇지 않으면 브라우저 보안이 작동하여 XHR을 사용할 수 없습니다. 타사 RSS 피드를 읽으려는 경우 프록시를 사용해야 할 수도 있습니다.

2) 응답의 content-type 헤더는 text/xml이어야합니다. 이 문제를 해결할 수있는 방법이 있지만 내용 유형이 정확하면 더 좋습니다.

+0

첫 번째 요점에 대한 응답으로, 아마 왜 작동하지 않습니다. 샌드 박스 서버에서 개발 중이며 RSS가 실시간으로 제공됩니다. 두 번째로 XML/RSS의 형식이 제어되어 있지 않아서 제약 조건 내에서 작업해야합니다. – user2517628

+0

프록시가 필요한 것처럼 들리지만 동일한 작업을 직접 수행해야합니다. content-type에 대해서는 XML 형식의 일부가 아닌 응답 헤더입니다. 응답 헤더는 서버에 의해 설정되므로 올바르지 않은 부분을 발견하면 서버 관리자에게 문의해야합니다. – murdock

+0

피드 리트리브에서 JSONP를 지원하는 Superfeedr의 API를 사용할 수도 있습니다. :) –