XML DOM - Eigenschappen en Methoden

Eigenschappen en methoden definiëren een programmeerinterface voor XML DOM.

Voorbeeld

Het volgende voorbeeld gebruikt een XML-bestand books.xml.

Functie loadXMLDoc()Ligt buiten de JavaScript, gebruikt om een XML-bestand te laden.

Functie loadXMLString()Ligt buiten de JavaScript, gebruikt om een XML-tekst te laden.

Laad en parseer een XML-bestand
Laad en parseer een XML-tekst

Programmeerinterface

DOM simuleert XML als een reeks knooppuntinterfaces. Nodes kunnen worden benaderd met JavaScript of andere programmeertalen. In deze handleiding gebruiken we JavaScript.

Het programmeren van DOM wordt gedefinieerd door een set standaard eigenschappen en methoden.

EigenschappenHoeft vaak om te gebruiken volgens het schema 'wat is iets' (bijvoorbeeld, de naam van het knooppunt is "book").

MethodenWorden vaak gebruikt in de vorm van "iets doen met iets" (bijvoorbeeld het verwijderen van de "book"-node).

XML DOM-eigenschappen

Enkele typische DOM-eigenschappen:

  • x.nodeName - Naam van x
  • x.nodeValue - Waarde van x
  • x.parentNode - Parennode van x
  • x.childNodes - Zoonnodes van x
  • x.attributes - Eigenschapsnode van x

Opmerking:In de bovenstaande lijst is x een node-object.

XML DOM-methoden

  • x.getElementsByTagName(name) - Haal alle elementen met de gespecificeerde naam op
  • x.appendChild(node) - Voeg een subnode toe aan x
  • x.removeChild(node) - Verwijder de subnode van x

Opmerking:In de bovenstaande lijst is x een node-object.

Voorbeeld

JavaScript-code om tekst van het <title>-element te halen uit books.xml:

txt=xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue

Na het uitvoeren van deze statement wordt de waarde die txt opslaat "Harry Potter".

Uitleg:

  • xmlDoc - Door de parser gecreëerde XML DOM
  • getElementsByTagName("title")[0] - Eerste <title>-element
  • childNodes[0] - Eerste onderdeel van het <title>-element (tekstnode)
  • nodeValue - Waarde van de node (tekst zelf)

In het bovenstaande voorbeeld is getElementsByTagName een methode, terwijl childNodes en nodeValue eigenschappen zijn.

XML-bestand parseren - crossbrowser voorbeeld

Het volgende codefragment gebruikt de functie loadXMLDoc om books.xml Laad de XML-parser in en toon de gegevens van de eerste book:

xmlDoc=loadXMLDoc("books.xml");
document.write(xmlDoc.getElementsByTagName("title"))
[0].childNodes[0].nodeValue);
document.write("<br />");
document.write(xmlDoc.getElementsByTagName("author"))
[0].childNodes[0].nodeValue);
document.write("<br />");
document.write(xmlDoc.getElementsByTagName("year"))
[0].childNodes[0].nodeValue);

Output:

Harry Potter
J K. Rowling
2005

TIY

In het bovenstaande voorbeeld gebruiken we childNodes[0] voor elke tekstnode, zelfs als elk element maar één tekstnode heeft. Dit komt omdat de methode getElementsByTagName() altijd een array teruggeeft.

XML-tekenreeks parseren - crossbrowser voorbeeld

Het volgende codefragment laadt en parseert een XML-tekenreeks:

Het volgende codefragment gebruikt de functie loadXMLString om books.xml Load XML parser and display the data of the first book:

text="<bookstore>"
text=text+"<book>";
text=text+"<title>Harry Potter</title>";
text=text+"<author>J K. Rowling</author>";
text=text+"<year>2005</year>";
text=text+"</book>";
text=text+"</bookstore>";
xmlDoc=loadXMLString(text);
document.write(xmlDoc.getElementsByTagName("title"))
[0].childNodes[0].nodeValue);
document.write("<br />");
document.write(xmlDoc.getElementsByTagName("author"))
[0].childNodes[0].nodeValue);
document.write("<br />");
document.write(xmlDoc.getElementsByTagName("year"))
[0].childNodes[0].nodeValue);

Output:

Harry Potter
J K. Rowling
2005

TIY