2012-02-19 6 views
0

사용자가 입력란에 URL을 입력하고 제출을 클릭하면 스크립트가 WebCite 페이지를 반환하는 페이지를 만들려고합니다. (WebCite는 ​​URL 캐싱 서비스입니다. 예를 들어 www.google.com을 "보관"하면 보관 페이지는 www.webcitation.org/65YgIgei6입니다.) 따라서 WebCite에는 캐시 할 URL이 주어지면 전자 메일 및 매개 변수 &returnxml=true이면 xml 파일을 반환합니다. (예를 들어, http://www.webcitation.org/archive?url=http://www.google.com&[email protected]&returnxml=true<webcite_url> 태그 사이의 텍스트가 아카이브 페이지입니다 xml 파일로 연결됩니다.)자바 스크립트를 사용하여 XML 파일 검색

그래서 나는 "</webcite_url>을"<webcite_url> "에 대한 XML 파일을 검색하고 몇 가지에 javscript (또는 jQuery를) 좋아하는 것 "태그 안에 url을 반환합니다. http://jsfiddle.net/gxHWk/이 기본 아이디어입니다.

btw, 나는 stackoverflow.com/questions/6648454/search-and-output-data-from-an-xml-file-using-javascript를 읽었지 만 코드를 수정하는 방법을 알 수는 없다. 내 상황.

(*에 "http : //"를 제거하기 때문에 스팸 필터의 일부 링크에서)

감사합니다!

+0

서버 측 프록시가 필요합니다. – SLaks

답변

0

이것이 바로 jQuery의 기능입니다. jsFiddle

$(XMLstring).find('webcite_url').text(); 
+0

와우, 훌륭합니다! 하지만 한 가지는 XML 파일의 텍스트를 복사 한 다음 변수로 설정 한 것입니다. 내 질문은 : 어떻게 자동으로 코드를 수행 할 수 있습니까? 다시 말해 코드에 http://www.webcitation.org/archive?url=http://www.google.com&[email protected]&returnxml=true에 액세스하고 그 내용을 변수로 설정할 수있는 방법은 무엇입니까? 그 파일? –

+0

오, 이후 다른 도메인 (webcite.org)을 쿼리하고 있으므로 jquery.get() 아약스 메서드를 http://think2loud.com/224-reading-xml-with-jquery/에 표시된대로 사용할 수 없습니다. –

+0

귀하의 질문은 "xml을 구문 분석하는 방법"이 아닌 "교차 도메인 아약스 수행 방법"입니다. 이 서비스는 JSON을 제공하지 않으므로 간단한 대답은 "할 수 없다"입니다. 긴 대답은 요청을 수행하기 위해 서버에 프록시를 설정해야한다는 것입니다. 참조 : http://jquery-howto.blogspot.com/2009/04/cross-domain-ajax-querying-with-jquery.html – Sinetheta

0

jQuery를하지 않고 솔루션 : 이건 그냥 일반 포인터 :

  • 는 DOM
  •  
    var iframe = document.createElement("iframe"); 
    iframe.src = "http://www.webcitation.org/archive?url=http://[email protected]&returnxml=true"; 
    document.body.appendChild(iframe); 
    iframe.onload = function() { 
        var url = this.contentDocument.getElementsByTagName("webcite_url")[0].firstChild.nodeValue; 
    
        // do whatever you want with the url over here 
    } 
    

    통과하지만 인식은 iframe와

    1. 부하 XML. 여기에 브라우저 비 호환성이있을 수 있습니다.

    +0

    ok 시도했지만 오류가 발생했습니다 ("오류 : 에 대한 권한이 거부되어 XMLDocument.getElementsByTagName 속성을 가져 왔습니다). http://jsfiddle.net/Ku9Tc/5/를 참조하십시오. –

    +0

    원래의 정책이 동일하므로 다른 도메인의 콘텐츠에 액세스 할 수 없습니다. 따라서 서버에서 요청을 리디렉션하는 프록시를 사용하거나 http://easyxdm.net/wp/ – umjasnik

    0

    jQuery는 xml 파일을 구문 분석하기 위해 작성되었습니다. 문제는 다른 도메인의 데이터를 구문 분석하는 방법입니다. JSONP이 답변입니다. 요청이 끝날 때 ?callback=?"을 추가하고 data 옵션에 대해 jsonp을 입력하십시오.

    $.ajax({ 
        url: "http://www.webcitation.org/archive?url=http://www.google.com&[email protected]&returnxml=true?callback=?", 
        dataType:'jsonp', 
        success: function (XMLstring) { 
        $(XMLstring).find('webcite_url').text(); 
        } 
    }); 
    
    +0

    과 같은 것을 사용해보십시오.이게 내가 찾고있는 것에 더 가깝게 보입니다. 그러나, 나는 이것을 시도했다. (http://jsfiddle.net/A2S2S/1/), 에러가 발생했다 :'unterminated regular expression literal ...'이것은 수정하기 위해 사소한 것으로 보이지만 나 자신이다. 그것을 고치는 방법을 모르십시오 –

    +0

    안녕하세요 @AnthonyNewman. 나는 그것이 "XML 파싱"과 다른 문제일지도 모른다고 생각합니다. 그래서 당신이 새로운 질문을 열 것을 제안합니다. :) – steveyang

    +0

    고마워, 내가 그걸 할거야! 나는 네가 나를 올바른 길로 인도했다고 생각한다. –

    관련 문제