XML DOM tillgång till noder

Genom DOM kan du komma åt varje nod i ett XML-dokument.

Nodåtkomst

Du kan komma åt noder på tre sätt:

  • Genom att använda getElementsByTagName() metoden
  • Genom att använda loopar (genomgångar) av nodträdet
  • Genom att använda relationer mellan noder att navigera i nodträdet

getElementsByTagName() metod

getElementsByTagName() Returnerar alla element med angiven taggnamn.

Syntaks

node.getElementsByTagName("tagname");

Exempel

I följande exempel returneras alla <title>-element under x-elementet:

x.getElementsByTagName("title");

Observera att det ovanstående exempel endast returnerar <title>-element under x-noden. Om du vill returnera alla <title>-element i XML-dokumentet, använd:

xmlDoc.getElementsByTagName("title");

HärxmlDoc är dokumentet självt (dokumentnoden).

DOM nodlista

getElementsByTagName() Metoden returnerar en nodlista (nodlist). Nodlistan är en array av noder.

x = xmlDoc.getElementsByTagName("title");

Du kan komma åt <title>-elementen i x genom att använda indexnummer. Om du vill komma åt tredje <title>, kan du skriva så här:

y = x[2];

Kommentar:Index börjar vid 0.

Prova själv

DOM-nodlistlängd

length Attribut för att definiera längden på nodlistan (nodantal).

Du kan använda length Attribut för att loopa igenom nodlistan:

Exempel

var x = xmlDoc.getElementsByTagName("title");
for (i = 0; i < x.length; i++) {
  // Här kan du skriva kod för att hantera varje nod
  }

Prova själv

Nodtyp

Noder i XML-dokumentet documentElement Attribut är rodnoden.

Attribut är nodens nodeName Attribut är nodens namn.

Attribut är nodens nodeType Attribut är nodens typ.

Du kommer att lära dig mer om nodattribut i nästa kapitel i denna handledning.

Prova själv

Loopa noder

Följande kod loopar igenom rodnodens undernoder (också elementnoder):

Exempel

txt = "";
x = xmlDoc.documentElement.childNodes;
for (i = 0; i < x.length; i++) {
  // Behandla endast elementnoder (typ 1)
  if (x[i].nodeType == 1) {
    txt += x[i].nodeName + "<br>";
  }
}

Prova själv

Exempel förklaring:

  1. Anta att du redan har laddat "books.xml"Ladda till xmlDoc
  2. Hämta undernoderna för rodnoden (xmlDoc)
  3. Kontrollera varje undernods nodtyp. Om nodtypen är "1" är en elementnod
  4. Om det är ett element, skriv ut nodnamnet

Navigera nodrelationer

Följande kod navigerar genom nodrelationer i nodträdet:

Exempel

x = xmlDoc.getElementsByTagName("book")[0];
xlen = x.childNodes.length;
y = x.firstChild;
txt = "";
for (i = 0; i < xlen; i++) {
  // Behandla endast elementnoder (typ 1)
  if (y.nodeType == 1) {
    txt += y.nodeName + "<br>";
  }
  y = y.nextSibling;
}

Prova själv

Exempel förklaring:

  1. Anta att du redan har laddat "books.xml"Ladda till xmlDoc
  2. Hämta undernoderna för den första "book"-elementet
  3. Sätt "y" variabeln till den första book-elementets första undernod
  4. För varje undernod (från den första undernoden "y" (starta):
  5. Kontrollera varje undernods nodtyp. Om nodtypen är "1" är det en elementnod
  6. Om det är en elementnod, skriv ut nodens namn
  7. Sätt "y" Variabeln sätts till nästa jämlik nod och loopen körs igen