2012-03-29 10 views
1

jQuery $ .getを使用してXMLファイルをロードしています。コンテンツをロードした後、私はそれを操作し、.append()を使ってXMLノードを自分の要素に追加することができます。 これはchromeとfirefoxで動作しますが、IE8では動作しません。 xmlファイルのjQuery XMLの解析/操作IE8エラー

例:

<THEMES> 
    <THEME id="city"> 
    <ASSETS ui="game/city"> 
     <ASSET package_id="title_screen"  file="title_screen.swf" /> 
     <ASSET package_id="backgrounds"   file="cartoon_buildings.swf" /> 
     <ASSET package_id="stand"    file="stand.swf" /> 
    </ASSETS> 
    </THEME> 
</THEMES> 

私は、テーマのすべてのノードを切り離し、自分のオブジェクトに添付する必要があります。ここ

は、私のコードの本質である:

var themes = $("<themes></themes>"); 
    $.get('url/themes.xml', function(data, textStatus, jqXHR) { 
     var xml = data;   
     themes.append($(xml).children("themes").children('theme')); 
    }, 'xml'); 

エラーは、IE上themes.appendライン上で発生し、これは、ログが表示さです:

んが、そのようなインタフェースがサポートされていません

IEでXML要素を操作したり追加したりすることはできますか?このようにXML要素を取得シリアル化する

答えて

2

2つの問題があります。

  1. ドキュメントから:

    クエリ(HTML [、のownerDocumentは] )
    html:オンザフライで作成するHTMLの文字列。これは、HTML がXMLではなく解析されることに注意してください。

  2. IEは、DOM仕様に従って、ドキュメント間のノードの移動を受け入れません。

これは、両方の問題を修正し、あまりにもIEで私の作品:

//themes will be a jQuery-Object containing the documentElement 
    var themes = $($.parseXML("<themes></themes>").getElementsByTagName('*')[0]); 

    $.get('url/themes.xml', function(data, textStatus, jqXHR) { 
     var xml = $($.parseXML(data));  
     themes.append(xml.children("themes").children('theme'));   
    }, 'text' 
); 
+0

これはある種の魔法です! (これは動作します、ありがとう) – Rodik

4

試してみてください。

function xml2Str(xmlNode) 
{ 
    try { 
    // Gecko-based browsers, Safari, Opera. 
    return (new XMLSerializer()).serializeToString(xmlNode); 
    } 
    catch (e) { 
    try { 
     // Internet Explorer. 
     return xmlNode.xml; 
    } 
    catch (e) 
    {//Strange Browser ?? 
    alert('Xmlserializer not supported'); 
    } 
    } 
    return false; 
}