XML DOM - Accessing Nodes
S DOM máte přístup ke každému uzlu v dokumentu XML.
Zkuste si to sami - příklady
Níže uvedené příklady používají soubor XML books.xml .
Pomocí metody getElementsByTagName() získáte třetí prvek <title> v "books.xml"
Pomocí vlastnosti length můžete procházet všechny prvky <title> v "books.xml"
Pomocí vlastnosti nodeType získáte typ uzlu kořenového prvku v "books.xml".
Vlastnost nodeType použijte ke zpracování pouze uzlů elementu v "books.xml".
Pomocí vlastnosti nodeType a vlastnosti nextSibling zpracujte uzly prvků v souboru "books.xml".
Přístup k uzlům
K uzlu můžete přistupovat třemi způsoby:
1. Pomocí metody getElementsByTagName().
2. Procházením (procházením) stromem uzlů.
3. Procházením stromu uzlů pomocí vztahů uzlů.
Metoda getElementsByTagName().
getElementsByTagName() vrací všechny prvky se zadaným názvem značky.
Syntax
node.getElementsByTagName("tagname");
Příklad
Následující příklad vrátí všechny prvky <title> pod prvkem x:
x.getElementsByTagName("title");
Všimněte si, že výše uvedený příklad vrací pouze prvky <title> pod uzlem x. Chcete-li vrátit všechny prvky <title> v dokumentu XML, použijte:
xmlDoc.getElementsByTagName("title");
kde xmlDoc je samotný dokument (uzel dokumentu).
Seznam uzlů DOM
Metoda getElementsByTagName() vrací seznam uzlů. Seznam uzlů je pole uzlů.
x = xmlDoc.getElementsByTagName("title");
K prvkům <title> v x lze přistupovat pomocí čísla indexu. Pro přístup ke třetímu <title> můžete napsat::
y = x[2];
Poznámka: Index začíná na 0.
Více o seznamech uzlů se dozvíte v pozdější kapitole tohoto kurzu.
Délka seznamu uzlů DOM
Vlastnost length definuje délku seznamu uzlů (počet uzlů).
Seznam uzlů můžete procházet pomocí vlastnosti length:
Příklad
var
x = xmlDoc.getElementsByTagName("title");
for (i = 0; i <x.length; i++) {
//
do something for each node
}
Typy uzlů
Vlastností documentElement dokumentu XML je kořenový uzel.
Vlastností nodeName uzlu je název uzlu.
Vlastnost nodeType uzlu je typ uzlu.
Více o vlastnostech uzlu se dozvíte v další kapitole tohoto tutoriálu.
Procházení uzlů
Následující kód prochází podřízenými uzly, které jsou také uzly prvků, kořenového uzlu:
Příklad
txt = "";
x = xmlDoc.documentElement.childNodes;
for (i = 0; i <x.length; i++)
{
// Process only element nodes (type 1)
if (x[i].nodeType == 1) {
txt += x[i].nodeName + "<br>";
}
}
Vysvětlený příklad:
- Předpokládejme, že jste nahráli " books.xml " do xmlDoc
- Získejte podřízené uzly kořenového prvku (xmlDoc)
- U každého podřízeného uzlu zkontrolujte typ uzlu. Pokud je typ uzlu "1", jedná se o uzel prvku
- Vypište název uzlu, pokud se jedná o uzel prvku
Navigace ve vztazích uzlů
Následující kód se pohybuje ve stromu uzlů pomocí vztahů uzlů:
Příklad
x = xmlDoc.getElementsByTagName("book")[0];
xlen = x.childNodes.length;
y = x.firstChild;
txt = "";
for (i = 0; i <xlen; i++)
{
// Process only element nodes (type 1)
if (y.nodeType == 1) {
txt += y.nodeName + "<br>";
}
y = y.nextSibling;
}
Vysvětlený příklad:
- Předpokládejme, že jste nahráli " books.xml " do xmlDoc
- Získejte podřízené uzly prvního prvku knihy
- Nastavte proměnnou "y" jako první podřízený uzel prvního prvku knihy
- Pro každý podřízený uzel (začínající prvním podřízeným uzlem "y"):
- Zkontrolujte typ uzlu. Pokud je typ uzlu "1", jedná se o uzel prvku
- Vypište název uzlu, pokud se jedná o uzel prvku
- Nastavte proměnnou "y" jako další sourozenecký uzel a znovu proveďte smyčku