2009-06-02 4 views
0

나는 다음과 같은 구조의 XML 노드 함께 일하고 있어요 :JQuery와 IE8의 선택 bizarreness

<CF> 
    <T> 
     <TX>title</TX> 
     <em>15:2:</em> 
    </T> 
    <KW> 
     <TX>SOMETHING ELSE</TX> 
    </KW> 
    <!-- OTHER TAGS, SOME OF WHICH HAVE A <TX> CHILD --> 
</CF> 

상황이 더 많거나 적은 내가 파이어 폭스에서 예상대로 작동하지만 내가 IE8에서 이상한 행동을 받고 있어요. 예를 들어, 다음은 나에게 길이 (14)의 JQuery와 객체를 제공합니다

jQuery("T TX", xmlDoc).length 

이 하나 있어야 할 곳에 (이하 "CF"태그는 다시 하나의 "TX"를 포함 하나 "T"태그를 포함 꼬리표).

jQuery("TX", xmlDoc).length 

차라리 결과의 동일하거나 더 큰 수보다 적은 수 (jQuery 오브젝트의 길이 : 나는 다음과 같이 선택기에서 "T"를 제거하면, 기묘에 추가

12입니다.

첫 번째 질문은 TX 태그가 하나 뿐이며 "T"태그가 하나 뿐인 이유는 jquery가 "T"의 자손 인 14 개의 "TX"태그를 찾는 이유는 무엇입니까?

두 번째 질문은 : 선택기를 단순화하고 "T"를 제거하면 더 많은 결과가 아닌 왜 결과가 더 좋을까요?

내가 잘못했거나 버그를 발견 했습니까?

답변

0

"<TX> 제목 </TX >"에는 14 개의 문자가 있습니다. 실제 TX 요소의 수를 모르기 때문에 두 번째 쿼리의 12 개가 문서의 TX 요소 수인지 말할 수 없습니다.

종류의 미친 벽 떨어져 ... 그러나 perhapse 길이 재산은 당신이 그것의 돌려 보내는 생각하는 것을 돌려 보내고 있지 않다?

jQuery('T', mydoc).find('TX').length 

와 jQuery를 함께 IE8에서 HTML이 아닌 태그를 구문 분석에 문제가 발생한 것 같습니다

+0

Jrista, intersting 이론 (그리고 인상적인 관찰!) 그러나 "제목"은 예제 텍스트입니다. 실제 xml 문서에서는 텍스트가 더 길다. – morgancodes

+0

권자 ... 나는 시험해야했다. .. 내가 볼 수 있었던 유일한 명백하지 않은 물건이었다. 어떤 방식 으로든 전체 문서를 게시 할 수 있습니까? 더 많은 데이터로 수집 할 수있는 정보가 더 많을 수도 있습니다 ... – jrista

1

아마 당신은 이런 식으로 뭔가를 시도 할 수 있습니다. 방금 this discussion에 비틀 거 렸습니다. 제안 된 대답은 Microsoft.XMLDOM을 사용하여 XML에서 DOM 개체를 작성하는 것입니다. 여기에 핵심 부분입니다 :

xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); 
xmlDoc.async="false"; 
xmlDoc.loadXML(text); 

나는이 시도하고 그것은 단지 $ 문자열의 XML 문서를 구축 ($()와 $ .find 아무것도 반환하지 때 내가 IE8로 필요했던 몇 가지 문제를 해결했습니다. 필터가 작동합니다).

업데이트 : 대신 $ .parseXML()을 참조하십시오.

0

어떻게되는지 :