2011-03-30 29 views
5

Ben bu yöntemi kullanarak jquery ile bir HTML belgesi (üretilen malzeme) sonuna eklenen XML içeriğini erişmeye çalışıyorum:jQuery XML Ayrıştırma IE7/IE8

$("SELECTION_STATE").find("CHARACTERISTIC").each(function() { 
    if($(this).attr("name") == "Z_MDST") { 
     alert($(this).find("MEMBER").attr("name")); 
    } 
}); 

bu Firefox ve Chrome çalışıyor ancak IE'de değil, hiçbir şey uyarmayacak.

bu

xml ben jquery 1.5 ile elde edebilirsiniz herhangi bir yolu yoktur

<SELECTION_STATE> 

    <SELECTION type="CARTESIAN_PRODUCT"> 
     <CHARACTERISTICS> 
     <CHARACTERISTIC name="Z_MDST"> 
      <SELECTIONS> 
      <SELECTION type="SINGLE_MEMBER"> 
       <MEMBER name="00002213" type="MEMBER" text="2213"/> 
      </SELECTION> 
      </SELECTIONS> 
     </CHARACTERISTIC> 

çapraz çalışıyorum edilir?

Şimdiden teşekkürler

cevap

6

HTML belgesindesiniz. IE XML'i tanımıyor.

console.log($("SELECTION_STATE").get()); 

döner nesne IE XML ayrıştırıcı aracılığıyla çalıştırmak gerekecek XML kullanmak için

IE

içinde HTMLUnknownElement. Gibi bir şey.

var x = new ActiveXObject("Microsoft.XMLDOM"); 
x.loadXML(yourXML) 

Belli ki sadece yapmak isteyeceğiniz bu if ($ browser.msie.)

Yan soru: AJAX ile XML yüklenirken musunuz?

Güncelleme: Tam Örneği

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
var myXML = document.body.innerHTML; // or wherever you are storing the XML in the DOM 
xmlDoc.loadXML(myXML) 

if (xmlDoc.parseError.errorCode != 0) { 
    var myErr = xmlDoc.parseError; 
    console.log("You have error " + myErr.reason); 
} else { 
    console.log(xmlDoc.xml); 
} 

$("SELECTION_STATE", xmlDoc).find("CHARACTERISTIC").each(function() { 
    if($(this).attr("name") == "Z_MDST") { 
     alert($(this).find("MEMBER").attr("name")); 
    } 
}); 
+0

teşekkürler. no, bu, aynı belgede (kapalı kaynak ticari ürün) oluşturulan HTML içeriğine birkaç satırlık javascript ile erişmem gereken özel bir durumdur. no AJAX ilgili :-( –

+0

ile ilgili sorularınızı deneyeceğim - ilgili belgeyi nasıl yükleyebilirim? –

+0

XML'in doğrulanması gerektiğini veya IE'nin ayrıştırmayacağını fark etmek önemlidir (affetici olarak değil HTML olarak ...) İlk örnekte bazı kapanış etiketlerini kaçırdınız – Daniel

6

Zaten jQuery (sürüm 1.5 eklenmiştir http://api.jquery.com/jQuery.parseXML/) parseXML işlevini

var xmlDoc = $.parseXML(data); 

$(xmlDoc).find("CHARACTERISTIC").each(function() { 
    if($(this).attr("name") == "Z_MDST") { 
     alert($(this).find("MEMBER").attr("name")); 
    } 
}); 
kullanmak kullandığımız için
+0

bu işe yaramaz, jQuery 1.7 kullanıyorum ve ie7'yi test ediyorum ie1 – somid3

+0

Burada, IE ile bir düğümün içeriğini almak için '.html()' yi kullanamayacağınızı hatırlamanız önemlidir. '.text() işlevini kullanmalısınız –