2012-02-15 2 views
0

에 추가 XML 요소 나 서버에서 XML을 검색하기 위해 XMLHttpRequest를 사용하고, 나는 페이지에있는 기존 HTML 노드에 추가하고 싶습니다. , 나는 그것이 노드를 가지고 있기 때문에 나는대로 입력 추가하려면 노력하고있어 생각 파이어 폭스에 대해 잘 작동하지만와 IE 폭탄 "해당 인터페이스를 지원하는"잘 HTML을 형성 있고 난 응답에 XML 루트 요소에 xmlns='http://www.w3.org/1999/xhtml'를 추가 한 "IXMLDOMElement". 여기 MSIE : HTML 요소

는 XML 응답입니다 :

<qstat xmlns='http://www.w3.org/1999/xhtml'> 
    <ul> 
     <li><b>Cycle number:</b> 6</li> 
     <li><b>Error:</b> none</li> 
    </ul> 
</qstat> 

그리고 여기 자바 스크립트 :

var req = new XMLHttpRequest() 
req.onreadystatechange = function() { 
    if(req.readyState == 4) 
    { 
     dom = req.responseXML; 
     var nodes = dom.firstChild.childNodes; //Everything under the root node. 
     var ele = document.getElementById("qstat"); 
     for(var i=0; i<nodes.length; i++) 
     { 
      ele.appendChild(nodes[i]); // BOMBS HERE. 
     } 
    } 
}; 

MSIE 디버거 (MSIE 8) 제대로 tagName=ul있는 것으로 nodes[0]을 식별하고, 심지어 namespaceURI="http://www.w3.org/1999/xhtml"을 가지고,하지만 난 때문에 추측 형식이 IXMLDOMElement이면 호출이 작동하지 않습니다.

그래서 요소에 추가 할 수 있습니다 HTML 노드 객체를 대응 nodes의 개체를 변환하는 방법이 있나요?

답변

3

시도 다음

1)

factory.innerHTML = xml; 
innerHTML을

을 통해 HTML 요소

var factory = document.createElement("div"); 

2) 가져 오기 XML 요소

var xml = nodes[i].xml || new XMLSerializer().serializeToString(nodes[i]); 

3

를 직렬화) 렌더링 XML을 생성

4) g

ele.appendChild(eleHTML); 

힌트 : 다음에 한 번 만들어 다시 사용할 수 있습니다 공장 DOMHTML 요소

+0

덕분에 이제 HTML 요소

var eleHTML = factory.firstChild; 

5) 당신이 그것을 필요로하는 곳에에 eleHTML을 추가입니다 공장 요소에서 등의 firstChild 생각. 왜 내가 공장 요소가 필요한지 잘 모르겠다. 나는 'innerHTML'에 의지하고 있는데, 왜 그냥 ele.innerHTML = xml'에 직접 가지 않을까요? – brianmearns

+0

이렇게 할 수도 있습니다. "HTML 요소에 추가 XML 요소 MSIE"제법 –

+0

나는 당신의 질문에 대답했습니다. 감사! – brianmearns