2012-02-15 12 views
0

私はXMLHttpRequestを使用してサーバーからXMLを取得しています。これをページの既存のHTMLノードに追加したいと思います。それはよく形成されたHTMLと私は応答のXMLルート要素にxmlns='http://www.w3.org/1999/xhtml'を追加しました:Firefoxのためにうまくいきますが、IEの爆弾は "サポートされていません"と、私は推測します。 "IXMLDOMElement"ここで MSIE:HTML要素にXML要素を追加する

は、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> 

そして、ここでのJavaScript:

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の場合、呼び出しが機能しません。

nodesのオブジェクトを、要素に追加できる対応するHTMLノードオブジェクトに変換する方法はありますか?

答えて

3

は、次の試してみてください。

1)

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

2 HTML要素を作成する)

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

3フェッチXML要素をシリアル化)innerHTMLの

factory.innerHTML = xml; 
を通じてXMLをレンダリング

4)g

ele.appendChild(eleHTML); 

ヒント:あなたのためには、一度作成した再利用することができ、工場DOMHTML要素

+0

おかげで今でHTML要素

var eleHTML = factory.firstChild; 

5)あなたがそれを必要な場所にeleHTMLを追加している工場の要素かららのfirstChildアイディア。なぜ私は工場の要素が必要なのか分からないのですか?私は 'innerHTML'に頼っているのですが、' ele.innerHTML = xml'に直接行くのではないのですか? – brianmearns

+0

これも可能です。私はあなたの質問に答えようとしました。「MSIE:HTML要素にXML要素を追加する」 –

+0

十分に公正です。ありがとう! – brianmearns

関連する問題