XML DOM - Düğümlerde Gezinme
Düğümler, düğüm ilişkileri kullanılarak gezilebilir.
DOM Düğümlerinde Gezinme
Düğüm ağacındaki düğümlere, düğümler arasındaki ilişki aracılığıyla erişmeye genellikle "dolaşan düğümler" denir.
XML DOM'de düğüm ilişkileri, düğümlerin özellikleri olarak tanımlanır:
- ebeveyn Düğümü
- alt düğümler
- ilk çocuk
- son çocuk
- sonrakiKardeş
- öncekiKardeş
Aşağıdaki görüntü, düğüm ağacının bir bölümünü ve book.xml'deki düğümler arasındaki ilişkiyi gösterir :
DOM - Üst Düğüm
Tüm düğümlerin tam olarak bir üst düğümü vardır. Aşağıdaki kod, <book> öğesinin üst düğümüne gider:
Örnek
function myFunction(xml) {
var xmlDoc = xml.responseXML;
var x = xmlDoc.getElementsByTagName("book")[0];
document.getElementById("demo").innerHTML = x.parentNode.nodeName;
}
Örnek açıkladı:
- " books.xml " dosyasını xmlDoc'a yükleyin
- İlk <book> öğesini alın
- "x" üst düğümünün düğüm adını çıktılayın
Boş Metin Düğümlerinden Kaçının
Firefox ve diğer bazı tarayıcılar, boş beyaz boşlukları veya yeni satırları metin düğümleri olarak değerlendirir, Internet Explorer yapmaz.
Bu, özellikleri kullanırken bir soruna neden olur: firstChild, lastChild, nextSibling, BeforeSibling.
Boş metin düğümlerine (eleman düğümleri arasındaki boşluklar ve yeni satır karakterleri) gitmekten kaçınmak için, düğüm türünü kontrol eden bir işlev kullanırız:
function get_nextSibling(n)
{
var y = n.nextSibling;
while (y.nodeType! = 1)
{
y = y.nextSibling;
}
return y;
}
Yukarıdaki işlev , node .nextSibling özelliği yerine get_nextSibling( node ) kullanmanıza izin verir .
Kod açıkladı:
Öğe düğümleri tip 1'dir. Kardeş düğüm bir öğe düğümü değilse, bir öğe düğümü bulunana kadar sonraki düğümlere geçer. Bu şekilde sonuç hem Internet Explorer'da hem de Firefox'ta aynı olacaktır.
İlk Alt Öğeyi Alın
Aşağıdaki kod, ilk <book> öğesinin ilk öğe düğümünü görüntüler:
Örnek
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myFunction(this);
}
};
xhttp.open("GET",
"books.xml", true);
xhttp.send();
function myFunction(xml) {
var xmlDoc = xml.responseXML;
var x = get_firstChild(xmlDoc.getElementsByTagName("book")[0]);
document.getElementById("demo").innerHTML = x.nodeName;
}
//check if
the first node is an element node
function get_firstChild(n) {
var y = n.firstChild;
while (y.nodeType != 1) {
y = y.nextSibling;
}
return y;
}
</script>
</body>
</html>
Çıktı:
title
Örnek açıkladı:
- " books.xml " dosyasını xmlDoc'a yükleyin
- Bir öğe düğümü olan ilk alt düğümü almak için ilk <book> öğe düğümündeki get_firstChild işlevini kullanın
- Bir öğe düğümü olan ilk alt düğümün düğüm adını çıktılayın
Daha fazla örnek
Bu örnek, bir düğümün son alt düğümünü almak için lastChild() yöntemini ve özel bir işlevi kullanır.
Bu örnek, bir düğümün sonraki kardeş düğümünü almak için nextSibling() yöntemini ve özel bir işlevi kullanır.
Bu örnek, bir düğümün önceki kardeş düğümünü almak için öncekiSibling() yöntemini ve özel bir işlevi kullanır.