Node

(Auszug aus "XML in a Nutshell" von Elliotte Rusty Harold & W. Scott Means)

Das Interface Node ist das Basis-Interface von DOM: Von ihm sind sämtliche Bestandteile eines DOM-Baums abgeleitet. Die Attribute dieses Interfaces sind auf beliebige Knotentypen anwendbar, und die einfachen Methoden dieses Interfaces genügen, um den gesamten Baum ohne Cast-Operationen zu durchlaufen und zu betrachten. Zum Beispiel enthält das Attribut attributes eine Liste mit den Attributen eines Element-Objekts. Dasselbe Attribut ist auch für einen Knoten vom Typ ProcessingInstruction gültig, auch wenn es hier keinen sinnvollen Wert enthält. (Um Zugriff auf die Pseudo-Attribute einer Verarbeitungsanweisung zu bekommen, muss Ihr Anwendungsprogramm die Inhalte der Verarbeitungsanweisung ersetzen.)

Darüber hinaus bietet das Node-Interface auch Methoden, mit denen man Knoten suchen, in den DOM-Baum einfügen oder daraus entfernen kann. Das Interface ermöglicht den Aufbau einer Bibliothek generischer Methoden zur Bearbeitung eines Dokumentfragments, die unabhängig von einem bestimmten Knotentyp arbeiten.

 


Attribute

Die folgenden Attribute bieten Informationen über die Lage des Node-Objekts innerhalb des DOM-Baums. Alle diese Attribute sind nur-lesbar, und es werden Methoden angeboten, mit denen Knoten in den Dokumentbaum eingefügt und aus ihm entfernt werden können:

 


attributes: NamedNodeMap

Dieses Attribut ist nur bei Knoten vom Typ Element sinnvoll: In diesem Fall enthält es eine NamedNodeMap mit Attr-Objekten. In allen anderen Fällen ist der Wert dieses Attributs null.

Java-Bindung
public NamedNodeMap getAttribute( );

Java-Beispiel

// Gibt die Attribute eines Elements aus.
NamedNodeMap nnm = doc.getDocumentElement().getAttribute(  );

if (nnm != null) {

    for (int i = 0; i < nnm.getLength(  ); i++) {
        // Attributnamen und -wert ausgeben
        System.out.println(nnm.item(i).getNodeName(  ) + " = \"" +
                           nnm.item(i).getNodeValue(  ) + "\"");
    }
}

 


baseURI: DOMString (3)

Liefert den effektiven Basis-URI für den fraglichen Knoten oder null, wenn keiner verfügbar ist. Der Basis-URI ist der absolute URI, der verwendet werden sollte, um relative Links in einem XML-Dokument korrekt aufzulösen.

Java-Bindung
public String getBaseURI( );

 


childNodes: NodeList

Liefert eine NodeList mit einer Referenz auf jedes Kind des Node-Objekts.

Java-Bindung
public NodeList getChildNodes( );

Java-Beispiel

// Gibt den im Element enthaltenen Text aus.
NodeList nlChildren = elem.getChildNodes(  );
Node ndChild;

for (int iNode = 0; iNode < nlChildren.getLength(  ); iNode++) {
    ndChild = nlChildren.item(iNode);

    if (ndChild.getNodeType(  ) == Node.TEXT_NODE) {
        System.out.println(ndChild.getNodeValue(  ));
    }
}

Dynamische Baumreferenzen
An vielen Stellen spezifiziert DOM eine Knotenliste, die den aktuellen Status des Dokumentbaums angibt. Diese Referenzen sind fast immer live: Modifiziert man das Dokument, spiegeln sich diese Änderungen in der Liste wider und umgekehrt.
Diese oft vorteilhafte Eigenschaft kann durch Multithreading oder unvorhergesehene Seiteneffekte leider die Arbeit auch erschweren: Man muss sich immer vor Augen halten, dass der Inhalt der Liste, mit der man arbeitet, an ganz anderer Stelle geändert werden kann. Um die Wahrscheinlichkeit solcher schwer zu findenden Bugs zu reduzieren, sollte man Werte wie z.B. die Länge einer NodeList oder einer NamedNodeMap immer wieder neu lesen, statt sie in einer lokalen Variable zu speichern.

 


firstChild: Node

Enthält einen Zeiger auf das erste Kind des Knotens in der Liste. Wenn der Knoten keine Kinder hat, ist der Wert null.

Java-Bindung
public Node getFirstChild( );

Java-Beispiel

// Ausgabe der Typen aller Kindknoten des aktuellen Elements
for (Node nd = ndDump.getFirstChild(  ); nd != null;
     nd = nd.getNextSibling(  )) {
    if (nd.getNodeValue(  ) != null) {
        System.out.println(nd.getNodeValue(  ));
    }
}

 


lastChild: Node

Enthält einen Zeiger auf das erste Kind des Knotens in der Liste. Wenn der Knoten keine Kinder hat, ist der Wert null.

Java-Bindung
public Node getLastChild( );

Java-Beispiel

// Ausgabe der Typen aller Kindknoten des aktuellen Elements in umgekehrter Reihenfolge
for (Node nd = ndDump.getLastChild(  ); nd != null;
     nd = nd.getPreviousSibling(  )) {
    if (nd.getNodeValue(  ) != null) {
        System.out.println(nd.getNodeValue(  ));
    }
}

 


localName: DOMString (2)

Enthält den lokalen Anteil des voll qualifizierten Knotennamens, also das rechts vom : stehende Suffix in einem Namen mit Namensraum.

Java-Bindung
public String getLocalName( );

 


namespaceURI: DOMString (2)

Der URI des Namensraums, der bei der Erzeugung des Node-Objekts gesetzt war, oder null, falls dies nicht der Fall war. Der Wert ist also null, wenn der Knoten mit einer create NodeType ( )-Methode anstatt einer create NodeTypeNS ( )-Methode erzeugt wurde.

Java-Bindung
public String getNamespaceURI( );

 


nextSibling: Node

Liefert den nächsten Knoten in der Geschwisterliste. Gibt es keine weiteren Geschwister, d.h., ist der aktuelle Knoten der letzte, liefert nextSibling den Wert null.

Java-Bindung
public Node getNextSibling( );

Java-Beispiel

// Ausgabe der Typen aller Kindknoten des aktuellen Elements
for (Node nd = ndDump.getFirstChild(  ); nd != null;
     nd = nd.getNextSibling(  )) {
    if (nd.getNodeValue(  ) != null) {
        System.out.println(nd.getNodeValue(  ));
    }
}

 


nodeName: DOMString

Enthält den Namen des zugrunde liegenden DOM-Objekts. Je nach Knotentyp kann der Name, auf ein anderes Attribut des Objekts oder eine String-Konstante abgebildet werden. Die Zuordnungen sind in folgender Tabelle zu sehen:

Objekttyp nodeName
Element Tag-Name
Attr Attributname
Text "#text"
CDATASection "#cdata-section"
EntityReference Name des referenzierten Entitys
Entity Entity-Name
ProcessingInstruction Target
Comment "#comment"
Document "#document"
DocumentType Dokumenttyp-Name
DocumentFragment "#document-fragment"
Notation Notationsname

Java-Bindung
public String getNodeName( );


// Gibt den Namen des Dokumentelements aus.
Node ndDoc = (Node)doc.getDocumentElement( );
System.out.println("Document root element type: " + ndDoc.getNodeName( ));

 


nodeType: vorzeichenloser Short

Enthält einen Wert, durch den sich der konkrete Typ des Knotens ermitteln lässt. Die folgende Tabelle enthält die möglichen Werte, die Namen dieser Werte und die zugehörigen Knotentypen:

Name der Konstanten Objekttyp Wert der Konstanten
ELEMENT_NODE Element 1
ATTRIBUTE_NODE Attr 2
TEXT_NODE Text 3
CDATA_SECTION_NODE CDATASection 4
ENTITY_REFERENCE_NODE EntityReference 5
ENTITY_NODE Entity 6
PROCESSING_INSTRUCTION_NODE ProcessingInstruction 7
COMMENT_NODE Comment 8
DOCUMENT_NODE Document 9
DOCUMENT_TYPE_NODE DocumentType 10
DOCUMENT_FRAGMENT_NODE DocumentFragment 11
NOTATION_NODE Notation 12

Die Eltern-Kind-Relation und die Geschwister-Relation zwischen verschiedenen Dokumentknoten können Sie sich am besten als zwei doppelt verkettete Listen vorstellen. Die eine Liste verbindet Eltern mit Kindern, die andere verbindet Elemente der gleichen Ebene.

Java-Bindung
public short getNodeType( );

Java-Beispiel

 

// Ist der Knoten ein Knoten vom Typ Element?
public boolean isElement(Node nd) {
    return nd.getNodeType(  ) == Node.ELEMENT_NODE;
}

 


nodeValue: DOMString

Dieses Attribut versucht, einen sinnvollen Wert für das zugrunde liegende DOM-Objekt zu ermitteln. Je nach nodeType kann dieses Attribut auch nur lesbar oder immer null sein. Die folgende Tabelle führt die Werte für die unterschiedlichen Objekt-Typen auf:

Objekttyp nodeValue
Element null
Attr Attributwert
Text textueller Inhalt des Textknotens
CDATASection textueller Inhalt des CDATA-Blocks
EntityReference null
Entity null
ProcessingInstruction kompletter Inhalt, einschließlich Target
Comment Inhalt des Kommentars
Document null
DocumentType null
DocumentFragment null
Notation null

Exceptions

  • NO_MODIFICATION_ALLOWED_ERR

    Das Attribut nodeValue ist beim aktuellen Knotentyp nur-lesbar. Ein Versuch, den Attributwert zu verändern, bewirkt deshalb diese Exception.

  • DOMSTRING_SIZE_ERR

    Diese Exception wird ausgelöst, wenn der zu lesende Attributwert zu groß ist, um in einem DOMString in dieser Implementierung enthalten zu sein.

Java-Äquivalente
public String getNodeValue( ) throws DOMException;
public void setNodeValue(String nodeValue) throws DOMException;

Java-Beispiel

// Für Textknoten: Umwandlung des Textknotens in Kleinbuchstaben
if (nd.getNodeType(  ) == Node.TEXT_NODE) {
    // Umwandlung in Kleinbuchstaben
    nd.setNodeValue(nd.getNodeValue().toLowerCase(  ));
}

 


ownerDocument: Document

Enthält eine Referenz auf die Instanz des Interfaces Document, die dieses Node-Objekt erzeugt hat. Da Knoten nur über dieses Interface geschaffen werden können, ist das Property ownerDocument auch bei neuen oder leeren Knoten stets gesetzt. Nur bei Document-Knoten selbst und bei DocumentType-Knoten, die noch nicht zu einem Dokument gehören, kann der Wert null vorkommen. Knoten können nicht direkt in ein anderes Dokument verschoben werden. Stattdessen müssen Sie sie zuerst importieren. Dieses Property kann dazu dienen herauszufinden, woher ein Knoten stammt.

Java-Bindung
public Document getOwnerDocument( );

Java-Beispiel

// Füge meine zwei Cents hinzu.
Document doc = elem.getOwnerDocument(  );
Text txtAdd = doc.createTextNode("Meine 0,02 EUR");
elem.appendChild(txtAdd);

 


parentNode: Node

Enthält eine Referenz auf den Elternknoten. Außer Document, DocumentFragment und Attr können alle Objekttypen einen Elternknoten haben. Jeder Knoten innerhalb der Document-Hierarchie hat einen Elternknoten. Knoten können aber auch außerhalb des DOM-Baums stehen, wenn sie zum Beispiel gerade erst erzeugt und noch nicht eingefügt oder von der Kindknotenliste ihres Elternknotens mit einer der Methoden replaceChild( ) oder removeChild( ) entfernt wurden. In diesem Fall enthält das Attribut parentNode den Wert null.

Java-Bindung
Node getParentNode( );

Java-Beispiel

// Ein Element wird aus dem DOM-Baum entfernt.
elem.getParentNode(  ).removeChild(elem);

 


prefix: DOMString (2)

Das Präfix des Namensraums, in dem der Knoten liegt; sinnvoll nur für Knotentypen, die Namensräume unterstützen. Im Fall der Typen ELEMENT_NODE und ATTRIBUTE_NODE bewirkt eine Änderung des Präfixes auch eine Änderung der Attribute nodeName, tagName und name, weil eine Änderung des Präfixes auch eine Änderung des vollqualifizierten Namens ist.

Exceptions

  • INVALID_CHARACTER_ERR

    Wird ausgelöst, wenn das prefix unzulässige Zeichen enthält.

  • NO_MODIFICATION_ALLOWED_ERR

    Zeigt an, dass das prefix-Attribut in diesem DOM-Objektbaum nur-lesbar ist.

  • NAMESPACE_ERR

    Wird ausgelöst, wenn das prefix nicht den Regeln für die Erstellung von Namensraum-Identifiern entspricht. Diese Exception wird auch ausgelöst, wenn das Attribut namespaceURI den Wert null hat, oder beim Versuch der Verletzung der Regeln für den Aufbau von XML-Bezeichnern. Dazu gehört zum Beispiel die unzulässige Verwendung der reservierten Präfixe xml oder xmlns. Details über Namensräume finden unter Namensräume.

Java-Bindungen
public String getPrefix( );
public void setPrefix(String prefix) throws DOMException;

 


previousSibling: Node

Enthält einen Zeiger auf den vorigen Geschwisterknoten. Falls der aktuelle Knoten der erste ist, wird der Wert null geliefert.

Java-Bindung
public Node getPreviousSibling( );

Java-Beispiel

// Ausgabe aller Knotentypen in umgekehrter Reihenfolge
for (Node nd = ndDump.getLastChild(  ); nd != null;
     nd = nd.getPreviousSibling(  )) {
    if (nd.getNodeValue(  ) != null) {
        System.out.println(nd.getNodeValue(  ));
    }
}

 


textContent: DOMString (3)

Dieses Attribut bietet ein schnelles Mittel, um den Textinhalt von Knoten im Dokumentbaum abzurufen oder zu setzen. Wird es verwendet, um Text abzurufen, liefert es den Inhalt aller Text-Knoten, die Nachfahren des Kontextknotens sind. Dabei wird keine Normalisierung von Whitespace durchgeführt. Markup-Knoten (Attr, Element und so weiter) werden ignoriert. Wird es verwendet, um Text zu setzen, bewirkt es, dass alle Kindknoten entfernt werden und ein einziger Text-Knoten erzeugt und als einziges Kind des Zielknotens eingebunden wird. Die folgende Tabelle zeigt, wie das Attribut textContent für die unterschiedlichen Knotentypen aufgebaut ist:

Knotentyp Wert
ELEMENT_NODE ATTRIBUTE_NODE ENTITY_NODE ENTITY_REFERENCE_NODE DOCUMENT_FRAGMENT_NODE Kombiniert den textContent aller Kindknoten außer Knoten der Typen COMMENT_NODE und PROCESSING_INSTRUCTION_NODE oder liefert einen leeren String, wenn keine Kindknoten vorhanden sind.
TEXT_NODE CDATA_SECTION_NODE COMMENT_NODE PROCESSING_INSTRUCTION_NODE Liefert den gleichen Wert wie das Attribut nodeValue.
DOCUMENT_NODE DOCUMENT_TYPE_NODE NOTATION_NODE Liefert null.

Exceptions

  • NO_MODIFICATION_ALLOWED_ERR

    Wird ausgelöst, wenn der Knoten nur-lesbar ist.

  • DOMSTRING_SIZE_ERR

    Wird ausgelöst, wenn die Länge des Textinhalts die maximal zulässige Größe eines DOMString auf der Implementierungsplattform überschreitet.

Java-Bindung
public String getTextContent( );
public void setTextContent(String textContent) throws DOMException

 


Methoden

Die folgenden Methoden sind im Interface Node definiert:

 


appendChild: newChild

Der Knoten newChild wird an das Ende der Kindknotenliste angehängt. Falls newChild bereits an anderer Stelle in den DOM-Baum eingebunden ist, wird der Knoten zunächst aus dem Baum entfernt. Das Ergebnis dieser Methode ist der Knoten newChild.

Argument

  • newChild: Node

    Der anzuhängende Knoten. Falls der Knoten vom Typ DocumentFragment ist, werden alle Kinder von newChild in dieser Reihenfolge am Ende der Kinderliste des Knotens eingefügt.

Exceptions

  • HIERARCHY_REQUEST_ERR

    Wird ausgelöst, wenn durch die Operation eine ungültige Dokumentstruktur entsteht. Das ist z.B. der Fall, wenn der aktuelle Knoten keine Kinder oder keine Kinder dieses Typs haben darf. Die Exception wird auch dann ausgelöst, wenn der aktuelle Knoten selbst direkt oder indirekt von seinem neuen Kind abstammt.

  • WRONG_DOCUMENT_ERR

    Der Knoten newChild gehört zu einem anderen Dokument als der neue Elternknoten.

  • NO_MODIFICATION_ALLOWED_ERR

    Der gewünschte Elternknoten ist nur-lesbar.

Java-Bindung
public Node appendChild(Node newChild) throws DOMException;

Java-Beispiel

// Verschiebe den ersten Kindknoten an das Ende der Kindknotenliste.
if (elem.getFirstChild(  ) != null) {
    elem.appendChild( elem.getFirstChild(  ) );
}

 


cloneNode: deep

Erzeugt eine Kopie des aktuellen Knotens ohne Elternknoten. Falls das Argument deep den Wert true hat, werden Kindknoten rekursiv mitkopiert. Andernfalls enthält die erzeugte Kopie keine Kindknoten.

Argument

  • deep: boolean

    Der Wert true gibt an, dass die Kindknotenliste ebenfalls kopiert werden soll. Der Wert false bedeutet, dass nur der aktuelle Knoten kopiert werden soll.

Java-Bindung
public Node cloneNode(boolean deep);

Java-Beispiel

 

// Kopiere dieses Element und alle seine Kinder.
elem.cloneNode(true);

 


compareDocumentPosition: other (3)

Vergleicht die relative Position des Knotens, auf dem die Methode aufgerufen wird, mit der Position des Knotens other. Der Rückgabewert ist eine Bit-Maske, die die relative Position zwischen den beiden Knoten in Dokumentreihenfolge anzeigt. Die folgende Tabelle führt die Bit-Masken-Elemente und ihre Bedeutung auf:

Konstantenname Wert Bedeutung
DOCUMENT_POSITION_DISCONNECTED 0x01 Die zwei Knoten sind nicht verknüpft (sie haben keinen gemeinsamen Vorfahren) und können nicht verglichen werden.
DOCUMENT_POSITION_PRECEDING 0x02 Der Knoten other steht im Dokument vor dem Zielknoten.
DOCUMENT_POSITION_FOLLOWING 0x04 Der Knoten other kommt nach dem Zielknoten.
DOCUMENT_POSITION_CONTAINS 0x08 Der Knoten other enthält den Zielknoten.
DOCUMENT_POSITION_CONTAINED_BY 0x010 Der Zielknoten enthält den Knoten other.
DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC 0x020 Die relativen Positionen sind implementierungsspezifisch, wie das bei nicht-verknüpften Knoten der Fall ist.

Argument

  • other: Node

    Der andere Knoten, der für den Vergleich der Positionen herangezogen werden soll.

Exception

  • NOT_SUPPORTED_ERR

    Wird ausgelöst, wenn zwei Knoten aus inkompatiblen DOM-Implementierungen stammen und ihre relativen Positionen nicht ermittelt werden können.

Java-Bindung
public static final short DOCUMENT_POSITION_DISCONNECTED = 0x01;
public static final short DOCUMENT_POSITION_PRECEDING = 0x02;
public static final short DOCUMENT_POSITION_FOLLOWING = 0x04;
public static final short DOCUMENT_POSITION_CONTAINS = 0x08;
public static final short DOCUMENT_POSITION_CONTAINED_BY = 0x10;
public static final short DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20;
public short compareDocumentPosition(Node other) throws DOMException;

 


getFeature: feature, version (3)

Bietet ein nicht-bindungsspezifisches Mittel, um eine Objekt-Instanz abzurufen, die eine bestimmte Version des angegebenen Features implementiert. Wird vorwiegend verwendet, um auf Features zuzugreifen, die über DOM Core hinausgehen.

Argumente

  • feature: DOMString

    Der Paketname des abzurufenden Features.

  • version: DOMString

    Der abzurufende DOM-Versions-Level für das angegebene Feature.

Rückgabewert

Liefert ein Objekt, das die APIs für das angegebene Feature implementiert. Liefert null, wenn keine Implementierung verfügbar ist.

Java-Bindung
public Object getFeature(String feature, String version);

 


getUserData: key (3)

Diese Methode wird verwendet, um benutzerdefinierte Daten von einem Knoten abzurufen, die bei ihm mit der Methode setUserData( ) eingefügt wurden. Wenn keine Benutzerdaten mit dem angegebenen Schlüssel gefunden werden, liefert die Methode null.

Argument

  • key: DOMString

    Der eindeutige Schlüssel, der mit den abzurufenden Benutzerdaten verknüpft ist.

Java-Bindung
public Object getUserData(String key);

 


hasAttribute ( )

Gibt an, ob ein Element-Knoten irgendwelche Attribute hat. Liefert true, wenn der Knoten Attribute hat, andernfalls false.

Java-Bindung
public boolean hasAttribute( );

 


hasChildNodes ( )

Diese Methode ist eine bequeme Möglichkeit, um festzustellen, ob ein bestimmter Knoten Kinder hat. In diesem Fall ist das Ergebnis true, ohne Kinder dagegen false.

Java-Bindung
public boolean hasChildNodes( );

 


insertBefore: newChild, refChild

Fügt das Node-Objekt newChild in die Kindknotenliste des Elternknotens ein, der sie aufruft. Der Parameter refChild legt fest, an welcher Stelle der neue Knoten in die Liste eingefügt werden soll. Falls refChild den Wert null hat, wird der neue Knoten am Ende der Kindknotenliste eingefügt. (Dieses Verhalten entspricht appendChild.) Falls der Wert nicht null ist, wird der neue Knoten vor dem angegebenen Knoten in die Liste eingefügt. Sollte der neue newChild-Knoten bereits ein Bestandteil des Dokumentbaums sein, werden zunächst alle Verknüpfungen gelöst, bevor er an der neuen Position eingefügt wird. Enthält der newChild-Knoten eine Referenz auf das DocumentFragment-Objekt, wird jedes seiner Kinder geordnet vor dem refChild-Knoten eingefügt, und es wird eine Referenz auf den newChild-Knoten zurückgegeben.

Argumente

  • newChild: Node

    Der einzufügende Knoten.

  • refChild: Node

    Der Knoten, vor dem der neue Knoten stehen soll, oder null, falls der neue Knoten an das Ende der Kindknotenliste eingefügt wird.

Exceptions

  • HIERARCHY_REQUEST_ERR

    Wird ausgelöst, wenn durch die Operation eine ungültige Dokumentstruktur entsteht. Das ist z.B. der Fall, wenn der aktuelle Knoten keine Kinder oder keine Kinder dieses Typs haben darf. Die Exception wird auch dann ausgelöst, wenn der aktuelle Knoten selbst direkt oder indirekt von seinem neuen Kind abstammt.

  • WRONG_DOCUMENT_ERR

    Der Knoten newChild gehört zu einem anderen Dokument als der neue Elternknoten.

  • NO_MODIFICATION_ALLOWED_ERR

    Der neue Elternknoten ist nur-lesbar.

  • NOT_FOUND_ERR

    Wird ausgelöst, wenn der Knoten, auf den refChild zeigt, kein Kind des Knotens ist, das die Einsetzung vornimmt.

  • NOT_SUPPORTED_ERR

    Wird ausgelöst, wenn die fragliche DOM-Implementierung das Einfügen von DocumentType- oder Element-Knoten in einen Document-Knoten nicht unterstützt.

Java-Bindung
public Node insertBefore(Node newChild, Node refChild)
throws DOMException;

Java-Beispiel

// Ein neuer Knoten wird an den Anfang der Kindknotenliste eingefügt.
ndParent.insertBefore(ndNew, ndParent.getFirstChild(  ));

 


isDefaultNamespace: namespaceURI (3)

Diese Methode liefert true, wenn der angegebene Namensraum-URI der Default-Namensraum für diesen Knoten ist. Andernfalls liefert sie false.

Argument

  • namespaceURI: DOMString

    Der Namensraum-URI, der mit dem Default-Namensraum-URI verglichen werden soll.

Java-Bindung
public boolean isDefaultNamespace(String namespaceURI);

 


isEqualNode: arg (3)

Diese Methode vergleicht den Knoten, auf dem die Methode aufgerufen wird, mit dem Knoten, der über den Parameter other referenziert wird. Wenn folgende Bedingungen zutreffen, werden die beiden Knoten als gleich betrachtet:

  • Sie haben denselben Typ.
  • Die folgenden Attribute sind gleich: nodeName, localName, namespaceURI, prefix, nodeValue
  • Die attributes-Maps sind gleich (sie enthalten dieselbe Anzahl von Knoten, und diese sind miteinander identisch).
  • Die childNodes-Listen sind gleich (die Kindknotenbäume sind identisch, und jedes Kind besteht den Gleichheitstest mit seinem Gegenstück im anderen Baum).
  • Nur bei Knoten des Typs DocumentType: Die publicId, systemId, internalSubset, entities und notations sind ebenfalls identisch.

Die Methode liefert nur dann true zurück, wenn die Knoten alle oben genannten Tests bestehen. Andernfalls liefert sie false.

Argument

  • arg: Node

    Der Knoten, der im Vergleich verwendet werden soll.

Java-Bindung
public boolean isEqualNode(Node arg);

 


 

isSameNode: other (3)

Diese Methode liefert true, wenn der Knoten, auf dem die Methode aufgerufen wird, und der Knoten, der über den Parameter other referenziert wird, dasselbe Node-Objekt referenzieren. Andernfalls liefert sie false zurück.

Argument

  • other: Node

    Der Knoten, der im Vergleich verwendet werden soll.

Java-Bindung
public boolean isSameNode(Node other);

 


isSupported: feature, version (2)

Prüft, ob ein bestimmtes DOM-Feature in dieser konkreten DOM-Implementierung unterstützt wird. Für Details vergleichen Sie am besten die Methode »hasFeature: feature, version.« des Interfaces »DOMImplementation« weiter oben in diesem Kapitel. Das Ergebnis ist true oder false, je nachdem, ob das Feature unterstützt wird oder nicht.

Argumente

  • feature: DOMString

    Der Name des zu prüfenden Features. Siehe dazu auch die Methode »hasFeature: feature, version.« des Interfaces »DOMImplementation«.

  • version: DOMString

    Die Versionsnummer, in der das Feature vorhanden sein soll, z.B. 2.0 für DOM Level 2. Wird keine Version angegeben, wird nach einer beliebigen Version des Features gesucht.

Java-Bindung
public boolean supports(String feature, String version);

 


lookupNamespaceURI: prefix (3)

Diese Methode sucht nach dem Namensraum-URI, der mit einem gegebenen Namensraum-Präfix assoziiert ist, und beginnt dabei bei dem Knoten, auf dem sie aufgerufen wurde. Dann durchsucht sie rekursiv alle Elternknoten bis das Präfix gefunden wurde. Wenn das Präfix gefunden wird, ist der Rückgabewert ein DOMString, der den Namensraum-URI enthält, der mit dem Präfix verknüpft ist. Andernfalls liefert die Methode null zurück.

Argument

  • prefix: DOMString

    Das zu suchende Namensraum-Präfix.

Java-Bindung
public String lookupNamespaceURI(String prefix);

 


lookupPrefix: namespaceURI (3)

Diese Methode sucht nach dem Namensraum-Präfix, das dem angegebenen Namensraum-URI zugeordnet ist, und beginnt dabei mit dem Knoten, auf dem sie aufgerufen wurde. Dann durchsucht sie rekursiv alle Elternknoten, bis ein passendes Präfix gefunden wird. Wenn das Präfix gefunden wird, ist der Rückgabewert ein DOMString, der das Präfix enthält. Andernfalls liefert die Methode null zurück. Wenn mehrere passende Präfixe gefunden werden, ist es von der Implementierung abhängig, welches Präfix zurückgeliefert wird.

Argument

  • namespaceURI: DOMString

    Der Namensraum-URI des zu suchenden Präfixes.

Java-Bindung
public String lookupPrefix(String namespaceURI);

 


normalize ( ) (2)

Aufeinander folgende Text-Knoten werden rekursiv zu einem einzelnen verschmolzen. Leere Text-Knoten werden aus dem DOM-Baum entfernt. Das ist z.B. nützlich, wenn man eine absolute Referenz innerhalb eines Dokuments benötigt oder wenn man zwei Dokumente vergleichen will.

Java-Bindung
public void normalize( );

 


removeChild: oldChild

Der Knoten oldChild wird aus der Kindknotenliste des aktuellen Knotens entfernt. Das Ergebnis ist eine Referenz auf das nun entfernte Node-Objekt.

Argument

  • oldChild: Node

    Der zu entfernende Knoten.

Exceptions

  • NO_MODIFICATION_ALLOWED_ERR

    Wird ausgelöst, wenn der Elternknoten nur-lesbar ist.

  • NOT_FOUND_ERR

    Der Knoten oldChild ist kein Kind des aktuellen Knotens.

  • NOT_SUPPORTED_ERR

    Könnte ausgelöst werden, wenn der Document-Knoten einer bestimmten DOM-Implementierung das Entfernen von DocumentType- oder Element-Knoten nicht untestützt.

Java-Bindung
public Node removeChild(Node oldChild) throws DOMException;

Java-Beispiel

// Entferne ein Element und alle seine Kinder
// aus dem DOM-Baum.
elem.getParentNode(  ).removeChild(elem);

 


replaceChild: newChild, oldChild

Ersetzt den Kindknoten oldChild durch newChild. Falls newchild aktuell an anderer Stelle in den DOM-Baum eingebunden ist, wird der Knoten zunächst entfernt. Das Ergebnis dieser Methode ist der entfernte Knoten oldChild.

Argumente

  • newChild: Node

    Der einzufügende Knoten.

  • oldChild: Node

    Der zu ersetzende Knoten.

Exceptions

  • HIERARCHY_REQUEST_ERR

    Wird ausgelöst, wenn durch die Operation eine ungültige Dokumentstruktur entsteht. Das ist z.B. der Fall, wenn der aktuelle Knoten keine Kinder oder keine Kinder vom Typ des Knotens newChild haben darf. Die Exception wird auch dann ausgelöst, wenn der aktuelle Knoten selbst direkt oder indirekt von newChild abstammt.

  • WRONG_DOCUMENT_ERR

    Der Knoten newChild gehört zu einem anderen Dokument als der neue Elternknoten.

  • NO_MODIFICATION_ALLOWED_ERR

    Wird ausgelöst, wenn der Elternknoten nur-lesbar ist.

  • NOT_FOUND_ERR

    Wird ausgelöst, wenn der Knoten, auf den oldChild zeigt, kein Kind des Knotens ist, das die Ersetzung vornimmt.

  • NOT_SUPPORTED_ERR

    Könnte ausgelöst werden, wenn der Document-Knoten einer fraglichen DOM-Implementierung das Ersetzen von DocumentType- oder Element-Knoten nicht unterstützt.

Java-Bindung
public Node replaceChild(Node newChild, Node oldChild)
throws DOMException;

Java-Beispiel

// Ersetze einen alten Knoten durch einen neuen.
ndOld.getParentNode(  ).replaceChild(ndNew, ndOld);

 


setUserData: key, data, handler (3)

Die Methode setUserData( ) bietet (gemeinsam mit der Methode getUserData( )) eine Einrichtung, um anwendungsspezifische Informationen an DOM-Knoten anzuhängen. Durch Verwendung eindeutiger Schlüsselwerte ist es möglich, an einen einzelnen DOM-Knoten mehrere Benutzer-Objekte anzuhängen. Die Informationen, die angefügt werden sollen, müssen dem Typ DOMUserData entsprechen und können ein Data-Handler-Objekt enthalten, das das Interface UserDataHandler implementiert.

Argument

  • key: DOMString

    Der eindeutige Schlüssel, der mit dem data-Parameter in der Benutzerdatenliste des Knotens verknüpft ist.

  • data: DOMUserData

    Die anzufügenden Benutzerdaten.

  • handler: UserDataHandler

    Ein Objekt, das benachrichtigt wird, wenn auf dem fraglichen DOM-Knoten verschiedene Operationen ausgeführt werden.

Java-Bindung
public Object setUserData(String key, Object data,
UserDataHandler handler);

  

zum Seitenanfang

<< zurück vor >>

 

 

 

Tipp der data2type-Redaktion:
Zum Thema XML bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

  


Copyright © 2005 O'Reilly Verlag GmbH & Co. KG
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "XML in a Nutshell" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

O’Reilly Verlag GmbH & Co. KG, Balthasarstraße 81, 50670 Köln, kommentar(at)oreilly.de