XML DOM Node List

Nodlistor returneras av getElementsByTagName()-metoden och childNodes-egenskapen.

Exempel

Följande exempel använder XML-filer books.xml.

Funktion loadXMLDoc()Ligger utanför extern JavaScript, används för att ladda XML-filer.

Hämta text från det första <title>-elementet
Detta exempel använder getElementsByTagName()-metoden för att hämta text från det första <title>-elementet i "books.xml".
Genom att använda length-egenskapen för att loopen noder
Detta exempel använder nodlistan och length-egenskapen för att loopen alla <title>-element i "books.xml".
Hämta elementets egenskaper
Detta exempel använder egenskapslistan för att hämta egenskaper från den första <title>-elementet i "books.xml".

DOM Node List

När du använder egenskaper eller metoder som childNodes eller getElementsByTagName() returneras NodeList-objektet.

NodeList-objektet representerar en lista med noder i samma ordning som i XML.

Använd index som börjar vid 0 för att komma åt noder i nodlistan.

Följande bild representerar "books.xml"En nodlista för <title>-elementen:

DOM nod lista

Nedanstående kodsnutt använder loadXMLDoc() "Ladda "books.xml" till xmlDoc och returnera "books.xml"En nodlista för en title-element:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title");

Efter att ovanstående mening har utförts, blir x en NodeList-objekt.

Följande kodsnutt returnerar text från det första <title>-elementet i nodlistan x:

txt=x[0].childNodes[0].nodeValue;

Efter att ovanstående mening har utförts, är txt = "Everyday Italian".

TIY

Node List Length

NodeList-objektet håller sig uppdaterat. Om du tar bort eller lägger till element, uppdateras listan automatiskt.

Längden på NodeList-objektet är antalet noder i listan.

Nedanstående kodsnutt använder loadXMLDoc() Sätt "books.xml"Ladda xmlDoc, och returnera antalet <title>-element i "books.xml":

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName('title').length;

Efter att ovanstående mening har utförts, är x = 4.

Längden på nodlistan kan användas för att loopen alla element i listan.

Följande kodsnutt använder length-attributet för att iterera över listan av <title>-element:

xmlDoc=loadXMLDoc("books.xml");
//x-variabeln kommer att hålla en nodlista
x=xmlDoc.getElementsByTagName('title');
for (i=0;i<x.length;i++)
{
document.write(x[i].childNodes[0].nodeValue);
document.write("<br />");
}

Uppgiften är att skriva ut:

Harry Potter
Varje dag italienska
XQuery Kick Start
Lär dig XML

Exempel förklaring:

  • Genom att använda loadXMLDoc() Sätt "books.xml"Ladda xmlDoc
  • Sätt x-variabeln till att lagra nodlistan för alla title-element
  • Utskriv värden från textnoderna för alla <title>-element

TIY

DOM Egenskapslista (Namnknutnät)

Elementnodens egenskapsattribut returnerar en lista över egenskapsnoder.

Detta kallas Namnknutnät, förutom några skillnader i metoder och egenskaper, liknar det en nodlista.

Egenskapslistan håller sig uppdaterad. Om du tar bort eller lägger till egenskaper, uppdateras listan automatiskt.

Nedanstående kodsnutt använder loadXMLDoc() Ladda "books.xml" till xmlDoc och från "books.xmlDen första <book>-elementet i "" returnerar en lista med egenskapsnoder:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName('book')[0].attributes;

Efter att ovanstående kod har körts är x.length lika med antalet egenskaper, och du kan använda x.getNamedItem() för att returnera egenskapsnoden.

Nedanstående kodsnutt visar värdet för "category"-egenskapen för en bok samt antalet egenskaper:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("book")[0].attributes;
document.write(x.getNamedItem("category").nodeValue);
document.write("<br />" + x.length);

Uppgiften är att skriva ut:

children
1

Exempel förklaring:

  • Genom att använda loadXMLDoc() Sätt "books.xml"Ladda xmlDoc"
  • Sätt variabeln x till en lista med alla egenskaper för den första <book>-elementet
  • Uppgiften är att skriva ut värdet för "category"-egenskapen
  • Uppgiften är att skriva ut längden på egenskapslistan

TIY