XML DOM tilgang til knuder

Gennem DOM kan du få adgang til hver node i XML-dokumentet.

Adgang til node

Du kan få adgang til noder på tre måder:

  • ved at bruge getElementsByTagName() metoden
  • ved at gennemgå nodetræet
  • ved at navigere i nodetræet ved hjælp af forholdet mellem noderne

getElementsByTagName() metoden

getElementsByTagName() returnerer alle elementer med den specificerede tagnavn.

Syntaks

node.getElementsByTagName("tagname");

Eksempel

Følgende eksempel returnerer alle <title>-elementer under x-knuden:

x.getElementsByTagName("title");

Bemærk venligst, de ovenstående eksempler returnerer kun <title>-elementer under x-knuden. For at returnere alle <title>-elementer i XML-dokumentet, brug venligst:

xmlDoc.getElementsByTagName("title");

her,xmlDoc er dokumentet selv (dokumentknuden).

DOM node liste

getElementsByTagName() metoden returnerer en nodeliste (node list). Nodelisten er en array af knuder.

x = xmlDoc.getElementsByTagName("title");

Du kan få adgang til <title>-elementet i x ved hjælp af indeksnummer. Hvis du vil få adgang til tredje <title>, kan du skrive:

y = x[2];

Bemærk:indekset starter fra 0.

Prøv det selv

DOM-nodeliste længde

length egenskab til at definere længden af nodelisterne (nodetal)

Du kan bruge length egenskab for at gennemgå nodelisterne:

Eksempel

var x = xmlDoc.getElementsByTagName("title");
for (i = 0; i < x.length; i++) {
  // Her kan du skrive kode til at behandle hver node
  }

Prøv det selv

nodetype

XML-dokumentets documentElement egenskab er roden.

egenskab er nodens nodeName egenskab er nodens navn.

egenskab er nodens nodeType Egenskaber er nodens type.

Du vil lære mere om nodens egenskaber i det næste kapitel af denne vejledning.

Prøv det selv

Gennemgå knuder

Følgende kode gennemgår rodenes underknuder (som også er elementknuder):

Eksempel

txt = "";
x = xmlDoc.documentElement.childNodes;
for (i = 0; i < x.length; i++) {
  // Kun behandle elementknuder (type 1)
  if (x[i].nodeType == 1) {
    txt += x[i].nodeName + "<br>";
  }
}

Prøv det selv

Eksempel forklaring:

  1. Antag, at du allerede har indlæst "books.xml"Indlæse til xmlDoc
  2. Få roden (xmlDoc) af underknuder
  3. Kontroller hver undernodes nodetype. Hvis nodetypen er "1"er et element
  4. Hvis det er et element, udskriv nodens navn

Naviger noderelationer

Følgende kode navigerer gennem nodetreet ved hjælp af noders relationer:

Eksempel

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

Prøv det selv

Eksempel forklaring:

  1. Antag, at du allerede har indlæst "books.xml"Indlæse til xmlDoc
  2. Hent efterkoden til den første book-element
  3. Sæt "y" variabel til den første book elements første undernode
  4. For hver undernode (fra den første undernode "y" Start):
  5. Kontroller hver undernodes nodetype. Hvis nodetypen er "1" er det et elementnode
  6. Er det et elementnode, så udskriv navnet på noden
  7. Sæt "y" Variabel sættes til næste ligestillede node, og cyklen køres igen