2009-03-02 18 views

cevap

0

JavaScript'teki yerleşik XML serializer/deserializer öğesinin farkında değilim. JSON gibi JavaScript’e yerel bir şey mi düşündünüz?

+0

Ve JSON dinamik olarak yüklenebilir mi? –

+0

Evet, JSON dinamik olarak yüklenebilir. JQuery's getJSON yöntemini şu adreste bulabilirsiniz: http://docs.jquery.com/Ajax/jQuery.getJSON – Jason

6

Ne yazık ki, her tarayıcı XML içeren bir dizeyi ayrıştırma yolunu sunar. İşte her 3 büyük tarayıcı için bildiğim yollar. Unutmayın, bunlardan her birini çeşitli bloglardan ve kendi belleğimden bir araya getirdikleri için deneme şansım olmadı.

Firefox, bir dizede XML'yi ayrıştırmak için kullanılabilecek DOMParser adlı bir nesneye sahiptir. API oldukça basittir - DOMParser'u başlatın ve parseFromString yöntemini çağırın. İşte bir örnek:

var xmlString = '<?xml version="1.0"?>...'; 
dom=new ActiveXObject("Microsoft.XMLDOM"); 
dom.async="false"; 
dom.loadXML(xmlString); 
// use dom 

Ve son olarak, kaçık Safari:

var xmlString = '<?xml version="1.0"?>...'; 
var parser = new DOMParser(); 
var dom = parser.parseFromString(theString, "text/xml"); 
// use dom 

IE nedenle DOM denetimin örneğini ve yöntemleri kullanmak gerekir Microsoft ActiveX XMLDOM denetimini kullanır, burada tekrar bir örnek sürümü. Safari'nin yerleşik bir ayrıştırıcısı yoktur ve Windows'da çalışmadığı için ActiveX denetimlerini desteklemez. Ancak Safari, data: URL'leri desteklemektedir. Safari'de, belgeye sahip bir URL oluşturulur ve bir XMLHTTPRequest aracılığıyla çağrılır. Tüm XMLHttpRequests gibi, DOM'a erişmek için XMLHttpRequest'in standart responseXml özelliğini kullanırsınız.

var xmlString = '<?xml version="1.0"?>...'; 
var url = "data:text/xml;charset=utf-8," + encodeURIComponent(xmlString); 

var xhr = new XMLHttpRequest(); 
xhr.open("GET", url, false); 
xhr.send(null); 

var dom = xhr.responseXML; 
// Use dom here 
+0

Aslında Safari, Windows'ta çalışıyor, ancak elbette ActiveX'i kullanamadığı gerçeğini değiştirmiyor. +1. –

0

Bu kod kullandıktan sonra tarayıcılar

var url="file.xml" 
var xmlDoc=""; 
if(window.XMLHttpRequest&&!window.ActiveXObject) 
{ 
    var Gz=new XMLHttpRequest();Gz.open('GET',url,false);Gz.send(null);xmlDoc=Gz.responseXML; 
} 
else 
{ 
    xmlDoc=new ActiveXObject("Microsoft.XMLDOM");xmlDoc.async=false;xmlDoc.load(url); 
} 

her türlü için çalışacak, etikete ayrıştırmak ve verileri alabilir.

İlgili konular