En son web geliştirme öğreticiler
 

XML DOM Traverse Düğüm Ağacı


araçları arasında döngü veya düğüm ağacının genelinde seyahat sürüldü.


Düğüm Ağacı Traversing

Genellikle örneğin döngü bir XML belgesi, istiyorum: her bir öğenin değerini çıkarmak istediğinizde.

Bu denir "Traversing the node tree"

Aşağıdaki örnekte <kitabın> tüm alt düğümler döngüsü ve isimlerini ve değerlerini görüntüler:

Örnek

<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>
var x, i ,xmlDoc;
var txt = "";
var text = "<book>" +
"<title>Everyday Italian</title>" +
"<author>Giada De Laurentiis</author>" +
"<year>2005</year>" +
"</book>";

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

// documentElement always represents the root node
x = xmlDoc.documentElement.childNodes;
for (i = 0; i < x.length ;i++) {
    txt += x[i].nodeName + ": " + x[i].childNodes[0].nodeValue + "<br>";
}
document.getElementById("demo").innerHTML = txt;
</script>

</body>
</html>

Çıktı:

title: Everyday Italian
author: Giada De Laurentiis
year: 2005
Kendin dene "

Örnek açıklanmıştır:

  1. xmlDoc içine XML dizesi yükleyin
  2. Kök öğesinin alt düğümleri alın
  3. Her çocuk düğüm, çıkış düğümü adı ve metin düğümün düğüm değeri için

DOM Ayrıştırmadaki Tarayıcı Farkları

Tüm modern tarayıcılar W3C DOM şartname destekler.

Ancak, tarayıcılar arasında bazı farklılıklar vardır. Önemli bir fark var:

  • beyaz-boşluk ve yeni hatlar işlemek yolu

DOM - Beyaz Spaces ve Yeni Hatları

XML genellikle düğümler arasında yeni bir satır, boşluk karakterlerini içerir. Bu genellikle belge Notepad gibi basit bir editör tarafından düzenlenmiş olan durumdur.

Aşağıdaki örnek, (edited by Notepad) CR / LF ihtiva (new line) her bir hat ile, her bir çocuk düğüm önünde iki boşluk arasında:

<book>
  <title>Everyday Italian</title>
  <author>Giada De Laurentiis</author>
  <year>2005</year>
  <price>30.00</price>
</book>

Internet Explorer 9 ve önceki diğer tarayıcıları yaparken, boş beyaz boşluk veya metin düğümler gibi yeni çizgiler tedavi DEĞIL.

Aşağıdaki örnek, üretim çocuk sayısı kök öğeyi düğümlerin olacaktır (of books.xml ) sahiptir. IE9 ve önceki irade çıkışı 4 çocuk düğümleri, IE10 ve sonraki sürümlerinde ve diğer tarayıcılar çıktısı 9 çocuk düğümler ise:

Örnek

function myFunction(xml) {
var xmlDoc = xml.responseXML;
    x = xmlDoc.documentElement.childNodes;
    document.getElementById("demo").innerHTML =
    "Number of child nodes: " + x.length;
}
Kendin dene "

PCDATA - Çözümlü Karakter Veri

XML ayrıştırıcıları normalde bir XML belgesindeki tüm metin ayrıştırmak.

Bir XML elemanı çözümlenen zaman, XML etiketleri arasında metin de ayrıştırılır:

<message>This text is also parsed</message>

Ayrıştırıcı XML öğeleri bu örnekte olduğu gibi diğer elementler, bu içerebilir, çünkü <name> eleman iki diğer unsurları içermektedir (first and last) :

<name><first>Bill</first><last>Gates</last></name>

ve ayrıştırıcı bu gibi alt unsurları parçalara bölün olacaktır:

<name>
  <first>Bill</first>
  <last>Gates</last>
</name>

Çözümlü Karakter Veri (PCDATA) XML parser tarafından işlenecek metin veriler hakkında kullanılan bir terimdir.


CDATA - (Unparsed) Karakter Veri

terimi CDATA XML parser tarafından çözümlenen edilmemelidir metin veriler hakkında kullanılır.

Gibi karakterler "<" ve "&" XML öğeleri içinde yasadışı.

"<" Çözümleyici yeni bir elemanın başlangıç olarak yorumlaması nedeniyle bir hata üretecektir.

"&" Çözümleyici bir karakter varlığın başlangıç olarak yorumlaması nedeniyle bir hata üretecektir.

Bazı metin, JavaScript kodu gibi bir sürü içerir "<" veya "&" karakterleri. hataları komut kodu CDATA'da olarak tanımlanabilir kaçının.

Bir CDATA bölümü içindeki her şey ayrıştırıcı tarafından göz ardı edilir.

Bir CDATA bölümü ile başlar " <![CDATA[ " and ends with " ]]> " :

<script>
<![CDATA[
function matchwo(a,b) {
    if (a < b && a < 0) {
        return 1;
    } else {
        return 0;
    }
}
]]>
</script>

Yukarıdaki örnekte, CDATA bölümü içinde her şey ayrıştırıcı tarafından göz ardı edilir.

Notes on CDATA sections:

Bir CDATA bölümü dize içeremez "]]>" . İçiçe CDATA bölümleri izin verilmez.

"]]>" Boşluk veya satır sonları içeremez CDATA bölümü sona erdiğini söyledi.