XML DOM Ayrıştırma

Çoğu tarayıcı, XML'yi okumak ve işlemek için yerleşik XML解析çısı içerir.

Parser, XML'yi JavaScript tarafından erişilebilir olan nesneler haline dönüştürür.

Örnek

CodeW3C.com tarafından sağlanan örnekler tarayıcı ve platforma bağımsızdır. Bu örnekler tüm modern tarayıcılar'da çalışabilir.

XML dosyasını ve XML dizesini yüklemek ve解析 etmek
XML dizesini ve XML dosyasını yüklemek ve解析 etmek

XML解析

Tüm modern tarayıcılar, XML'yi okumak ve işlemek için yerleşik XML解析çısı içerir.

Parser, XML'yi belleğe alır ve onu JavaScript tarafından erişilebilir olan XML DOM nesnesine dönüştürür.

Microsoft XML解析çısı, diğer tarayıcılar'daki解析çılardan farklıdır. Microsoft解析çısı, XML dosyalarını ve XML dizesi (metin) yükleme destekler, diğer tarayıcılar ise ayrı bir解析çı kullanır. Ancak, tüm解析çılar XML ağacını dolaşma, erişme, ekleme ve silme fonksiyonlarına sahiptir.

Bu eğitim kılavuzunda, IE ve diğer tarayıcılar'da çalışabilecek betikler nasıl oluşturulacağını anlatacağız.

Microsoft XML解析çısı ile XML yüklenir

Microsoft XML解析çısı, Internet Explorer 5 ve daha yüksek sürümlerinde yerleşik olarak bulunur.

Aşağıdaki JavaScript parçası XML belgesini ("books.xml) parseçısına yükledi:

xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("books.xml");

Kod açıklaması:

  • ilk satırda boş bir Microsoft XML belge nesnesi oluşturulur
  • İkinci satır, asenkron yüklemeyi kapatır, böylece parseçı dosyanın tamamen yüklendiği sürece betiğin devam etmez
  • Üçüncü satır, parseçısına "books.xml" adlı bir belge yüklemesini belirtir

Aşağıdaki JavaScript parçası "txt" adlı bir dizi parseçısına yükler:

xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.loadXML(txt);

Not:loadXML() metod, dizesi (metin) yüklemek için kullanılır ve load() Dosya yüklemek için kullanılır.

Firefox ve diğer tarayıcılardaki XML parseçısı

Aşağıdaki JavaScript parçası XML belgesini ("books.xml) parseçısına yükledi:

xmlDoc=document.implementation.createDocument("","",null);
xmlDoc.async="false";
xmlDoc.load("books.xml");

Kod açıklaması:

  • İlk satır, boş bir XML belge nesnesi oluşturur
  • İkinci satır, asenkron yüklemeyi kapatır, böylece parseçı dosyanın tamamen yüklendiği sürece betiğin devam etmez
  • Üçüncü satır, parseçısına "books.xml" adlı bir belge yüklemesini belirtir

Aşağıdaki JavaScript parçası "txt" adlı bir dizi parseçısına yükler:

parser=new DOMParser();
xmlDoc=parser.parseFromString(txt,"text/xml");

Kod açıklaması:

  • İlk satır, boş bir XML belge nesnesi oluşturur
  • İkinci satır,解析çıcısına "txt" adlı bir dizi yüklemesini belirtir

Not:Internet Explorer loadXML() metodu ile XML dizgesini解析 ederken, diğer tarayıcılar DOMParser nesnesi.

XML dosyasını解析 etme - bir çapraz tarayıcı örneği

Aşağıdaki örnek bir XML belgesini ("books.xml) XML解析çıcısı yükleyin:

<html>
<body>
<script type="text/javascript">
try //Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  }
catch(e)
  {
  try //Firefox, Mozilla, Opera, vb.
    {
    xmlDoc=document.implementation.createDocument("","",null);
    }
  catch(e) {alert(e.message)}
  }
try 
  {
  xmlDoc.async=false;
  xmlDoc.load("books.xml");
  document.write("xmlDoc is loaded, ready for use");
  }
catch(e) {alert(e.message)}
</script>
</body>
</html>

TIY

Hata: Alanlar Arası Erişim

Güvenlik nedenlerinden ötürü, modern tarayıcılar çapraz alan erişimini izin vermiyor.

Bu, web sayfası ve yüklemeye çalıştığı XML dosyasının aynı sunucuda olması gerektiği anlamına gelir.

CodeW3C.com'un açtığı XML dosyası CodeW3C.com alanında bulunmaktadır.

Eğer yukarıdaki örneği kendi web sayfanızda kullanmayı planlıyorsanız, XML dosyasını kendi sunucunuzda bulundurmanız gerekir. Aksi takdirde, xmlDoc.load() "Erişim reddedildi" hatası üretir.

XML dizgesini解析 etme - bir çapraz tarayıcı örneği

Aşağıdaki kod bir XML dizgesini yükleyip解析ediyor:

<html>
<body>
<script type="text/javascript">
text="<bookstore>"
text=text+"<book>";
text=text+"<title>Harry Potter</title>";
text=text+"<author>J K. Rowling</author>";
text=text+"<year>2005</year>";
text=text+"</book>";
text=text+"</bookstore>";
try //Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async="false";
  xmlDoc.loadXML(text);
  }
catch(e)
  {
  try //Firefox, Mozilla, Opera, vb.
    {
    parser=new DOMParser();
    xmlDoc=parser.parseFromString(text,"text/xml");
    }
  catch(e) {alert(e.message)}
  }
document.write("xmlDoc is loaded, ready for use");
</script>
</body>
</html>

TIY

Not:Internet Explorer loadXML() yöntemini kullanarak XML dizgelerini解析 ederken, diğer tarayıcılar DOMParser nesnesi.