2009-12-30 11 views
0

여전히 Chrome 확장 프로그램을 사용하고 있으며 XML 파일에서 정보를 얻으 려 할 때 약간의 문제가 있습니다.자바를 사용하여 XML을 읽으십시오.

<html> 
    <head> 
     <style> 
      body { 
       width:160px; 
      } 
      p { 
       font-weight:bold; 
       margin-bottom:0; 
      } 
     </style> 
    </head> 
    <script type="text/javascript"> 
     function DOMImplementation(sUrl, fCallback) { 
      var dom; 
      if(window.ActiveXObject) { 
       dom = new ActiveXObject("Microsoft.XMLDOM"); 
       dom.onreadystatechange = function() { 
        if(dom.readyState == 4) { 
         fCallback(dom); 
        } 
       }; 
      } 
      else if(document.implementation && document.implementation.createDocument) { 
       dom = document.implementation.createDocument("", "", null); 
       dom.onload = function() { 
        fCallback(dom); 
       } 
      } 
      else { 
       alert("ERROR"); 
       return; 
      } 
      dom.load(sUrl); 
     } 

     function shrimit() { 
      var nicknick = localStorage["nick_name"]; 
      var apiapi = localStorage["api_key"]; 
      var yourc = document.getElementById("your"); 

      chrome.tabs.getSelected(null,function(tab) { 
       var tablink = tab.url; 
       if(!nicknick || !apiapi){ 
        yourc.setAttribute("value","Set the options"); 
       } else { 
        DOMImplementation("post.xml", getData); 
        function getData(oData) { 
         var tablink2 = oData.getElementsByTagName("alias")[0].firstChild.data; 
         yourc.setAttribute("value",tablink2); 
        } 
       } 
      }); 
     } 
    </script> 
    <body onload="shrimit()"> 
     <input id="your" name="your" type="text" value="" /> 
    </body> 
</html> 

당신이 날 도와 줄 수 :

<?xml version='1.0' encoding='utf8'?> 
<objects> 
    <url> 
     <domain>...</domain> 
     <nb_clics>...</nb_clics> 
     <alias>...</alias> 
     <title>...</title> 
     <source>...</source> 
     <description /> 
    </url> 
</objects> 

내가 어떤 결과를이 시도 없지만했습니다 다음은 XML의 모습은 어떻게?

+1

"결과 없음"은 정확히 무엇을 의미합니까? 오류 메시지가 나타 납니까? –

+2

크롬 확장 프로그램 인 경우 ActiveX를 사용해야하는 이유는 무엇입니까? 그것은 IE 기술입니다. 나는 아마 당신이 복사하고 일부 코드를 붙여 넣은 당신이 뭘하고 있는지 전혀 모르겠 것 같아요. –

+1

+1 추운 하드 진실을 apphacker에 –

답변

3

XMLHttpRequest을 사용하여 XML 파일을로드하십시오. 이는 여러 브라우저에서 표준화되고 신뢰할 수 있습니다. document.implementation.createDocument ... load은 그렇지 않습니다.

(당신은 대신 일반 XML 문서의 HTMLDocument 문서를받을 수 있습니다 일반적으로 document.implementation.createDocument에 다시 하락하기 전에 DOMParser에 대한 냄새 또한 createDocument('', '', null);이 유효하지 않습니다.... 당신이 빈 문자열 루트 요소 이름을 가질 수 없습니다 createDocument(null, 'name', null)를 사용 또한, 즉 크롬과 일부 다른 사람에 존재하는 내장 된 인터페이스/클래스의 이름이기 때문에 마지막으로, 가장 좋은 이름 DOMImplementation을 사용할 수 없습니다.)

을 마지막으로, else 절은 자바 스크립트의 유효 내부 function 문을 사용하여. 브라우저는이를 허용하는 경향이 있지만 결과는 다양합니다. 최상위 레벨에서 함수를 선언하거나 인라인 함수 표현식을 사용하십시오.

+2

Chrome 확장을위한 것이므로 아무 것도 사용하지 않아도됩니다. Chrome에서 사용할 수있는 것을 사용하세요. –

+1

그래, 이걸로 작동합니다 : var xmlhttp = new XMLHttpRequest(); xmlhttp.open ("GET", "post.xml", false); xmlhttp.send (""); xmlDoc = xmlhttp.responseXML; var tablink2 = xmlDoc.getElementsByTagName ("별칭") [0] .childNodes [0] .nodeValue; 감사합니다. – Axiol

관련 문제