2012-04-12 2 views
2

jquery에서 내 xml을 구문 분석해야하는 웹 응용 프로그램에서 작업 해 왔습니다. IE7과 Mozilla에서 작동하도록 웹 앱을 구축하고 있습니다. 내 xml로 반복하여 코드 아래에 썼습니다.IE7 + 및 Mozilla 용 Jquery를 사용하여 XML 구문 분석

<script type='text/javascript' src="jquery/jquery-1.7.1.min.js"></script> 

    <script type="text/javascript" language="javascript"> 
     var xml = '<root><cell id="1"> </cell><cell id="2"> </cell></root>';  
     //works in ie7 
     $(xml).filter("cell").each(function() { 
      alert('ie'+$(this).attr('id')); 
     }); 
     //works in mozilla 
     $(xml).find('cell').each(function() { 
      alert('mozilla'+$(this).attr('id')); 
     }); 
    </script> 

하지만 내가 발견 한 것은 다른 브라우저의 XML에서 가져 오는 다른 루핑 메커니즘을 작성해야한다는 것입니다. Jquery를 사용하면서 모든 브라우저 호환 가능해야하므로 다소 이상합니다.

그래서 브라우저 검사 코드를 작성하지 않아도되는 xml을 모든 브라우저에서 읽을 수있는 더 좋은 방법이 있습니까?

+0

을하며 이유를 찾을 설명 : 대신 parseXML() 사용 IE는 태그를 태그로 보지 않습니다. – GillesC

+0

@gillesc 그렇기 때문에'.filter()'**가 IE에서 작동하는 이유는 설명하지 않습니다. –

+3

IE7에서는 루트 노드를 제거하고 하위 요소 ('셀'노드) 만 포함하는 jQuery 객체를 반환하는 것처럼 보입니다. 먼저'$ .parseXML (xml)'을 호출 한 다음 그 결과를 jQuery 객체에 전달하십시오 :'var xmlDoc = $ .parseXML (xml); $ (xmlDoc) .find ('cell'). .); –

답변

1

jQuery의 메인 $() 함수를 사용하여 XML을 구문 분석하지 마십시오. HTML 요소에 내장 된 innerHTML 속성을 사용하여 XML을 구문 분석하려고 시도합니다.이 속성은 제대로 작동하지 않지만 사람들을 거짓된 보안 감각으로 가깝게 만듭니다. 로 IE에 실패) ($이 (XML)는 HTML DOM이다 아닌 실제로 XML 문서 IE는 루트 세포와 같은 태그를 인식하지 않기 때문에 내가 생각

var xmlDoc = $.parseXML(xml); 

$(xmlDoc).find("cell").each(function() { 
    alert($(this).attr('id')); 
});