2012-01-20 3 views
2

XPath를 통해 JavaScript로 만든 XML 문서에 액세스해야합니다. XMLHttpRequest를 통해 서버에서 XML 파일을로드하면 제대로 작동하지만 Firefox가 예상했던대로 Chrome에서 아무 것도 표시하지 않은 로컬 XML 문서에서 XML 문서 참조를 사용합니다. 여기Google 크롬의 XPath 버그?

예 부호의 비트 :

<!DOCTYPE html> 
<html> 
<head> 
<title>Title of the document</title> 
</head> 
<body> 
<script type="text/javascript"> 
     var xml = document.implementation.createDocument("", "", null); 

     var root = xml.createElement("root"); 

     var level1 = xml.createElement("L1"); 
     var level2 = xml.createElement("L2"); 
     L2txt = xml.createTextNode("here is L2"); 

     level2.appendChild(L2txt); 
     level1.appendChild(level2); 

     var level2 = xml.createElement("L2"); 
     level2.setAttribute("id", "myId"); 
     L2txt = xml.createTextNode("here is L2 with id"); 

     level2.appendChild(L2txt); 
     level1.appendChild(level2); 
     root.appendChild(level1); 

     path="//L2[@id='myId']"; 

     var nodes=xml.evaluate(path, root, null, XPathResult.ANY_TYPE, null); 
     var result=nodes.iterateNext(); 

     while (result) { 
      document.write(result.textContent); 
      document.write("<br />"); 
      result=nodes.iterateNext(); 
     } 
</script> 
</body> 
</html> 

코드 출력이 "여기 ID가 L2 인"해야한다.

나는 FF 9.0.1 사용하고 크롬 16.0.912.75는 개발 도구가 오류 또는 힌트를 표시하지 않습니다 해요.

이제 Chrome의 버그인지 Firefox의 '추가 기능'인지 모릅니다. 그리고 대부분의 수입 - Firefox를 Firefox처럼 작동시킬 수있는 방법은 무엇입니까? 또는 로컬에서 생성 된 XML 문서에서 XPath를 사용하는 방법에 대한 아이디어가 있습니까? 사전

답변

1

에서

덕분에 나는 당신이 당신의 예제 코드에서 작은 문제를 참조하십시오.

root 요소

는 XML 문서합니다 ( xml 변수)에 추가되지 않습니다. xml 문서 객체 검색 할 루트 요소 때문에 어떤 내용이 없기 때문에

따라서는 XPath 검색이 작동하지 않을 수 있습니다. 추가하십시오 :이 후

xml.appendChild(root); 

을 크롬에 나를 위해 문제를 해결

var root = xml.createElement("root"); 

합니다.

+1

와우, 나는이 * 놓친 이유를 모르겠어요, 대단히 감사합니다 - * .. 잘하지만, 파이어 폭스는 이전 버전을 받아 ... 크롬은 매우 정확한 것으로 보인다 ;-) – guitar1